2014-09-25 68 views
0

使用ASP.NET MVC,Entity Framework 6 SQL Express上的代码优先在我的本地机器上一切运行正常。当我发布到Windows Azure时,事情开始崩溃。默认的MVC页面显示得很好。我认为这些数据是正确的,因为我可以将Azure数据库与本地SQL Express进行比较,除了__MigrationHistory中的几条记录外,所有内容都是相同的。这是一个新的应用程序,所以我不认为有关从EF以前版本转换的其他SO问题适用。使用Windows Azure上的EntityFramework创建无效的列名'CreatedOn'

当我尝试访问查询数据库的页面时,我将Visual Studio调试器附加到Azure网站时出现以下异常。它在第一次调用dbContext.SingleOrDefault时失败。请注意,在暂停时,我可以在调试器中看到dbContext的完整数据。

System.Data.SqlClient.SqlException occurred 
    _HResult=-2146232060 
    _message=Invalid column name 'CreatedOn'. 
    HResult=-2146232060 
    IsTransient=false 
    Message=Invalid column name 'CreatedOn'. 
    Source=.Net SqlClient Data Provider 
    ErrorCode=-2146232060 
    _doNotReconnect=false 
    Class=16 
    LineNumber=2 
    Number=207 
    Procedure="" 
    Server=tcp:*.database.windows.net,1433 
    State=1 
    StackTrace: 
     at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 
    InnerException: 

任何帮助将不胜感激。

+1

请发布引发此异常的代码以及您的模型。 – 2014-09-26 01:08:29

+1

是的,粘贴代码片段,模型并检查Azure SQL数据库模式。我相信您首先发布了您的解决方案,该解决方案创建了D,然后您添加了该列,但未在Azure SQL DB上执行迁移!还有更多 - 您可以使用Azure Connection字符串在本地运行和调试。不需要发布到网站上查看SQL Azure的结果... – astaykov 2014-09-26 07:10:42

+0

我想我的迁移有问题,但我从来没有名为CreatedOn的列。使用Azure连接字符串对于解决此问题非常有帮助。 – 2014-09-26 13:23:46

回答

0

看起来像这样是与迁移和删除CreatedOn列有关。

我使用MiniProfiler得到这个异常。我从bin文件夹中删除了pdb文件(如MiniProfiler github网站中的文章中所建议的),并且不再发生。

您可能想检查对EF的引用,因为它可能是针对较早版本的EF构建的[nuget]包中的引用。