支持'EFDbContext'上下文的模型已更改错误

时间:2013-08-21 18:45:00

标签: c# asp.net-mvc visual-studio-2010 entity-framework

按照Pro Asp.Net MVC book,中的体育商店教程 我的Asp.Net MVC4解决方案中有两个项目。一个SportsStore.WebUI和一个SportsStore.Domain,其产品类位于

之下

我在模型类

中向Name添加了一个Required属性
    //Product.cs class
    [Required]
    public string Name { get; set; }
    //..more properties, not important as I get the same error for all -
   because I added Required to all

当我运行项目时,我收到The model backing the 'EFDbContext' context has changed since the database was created.错误。

我已经检查了stackoverflow和MSDN

解决方案1:无效

MSDN上建议的解决方案是运行Update-Database -Force。这不起作用,我得到

“无法加载程序集'SportsStore.WebUI'。(如果在Visual Studio中使用Code First Migrations,如果解决方案的startUp项目未引用包含迁移的项目,则会发生这种情况。您可以或者更改解决方案的startUp项目或使用-StartUpProjectName参数。)“

这很奇怪,因为A-我不是先使用代码而B-The Domain项目是参考WebUI项目

解决方案2:无效

然后我在PM控制台中尝试了Enable-Migrations,我得到了

No context type was found in the assembly 'SportsStore.WebUI'.

然后我尝试将启动项目更改为SportsStore.Domain(具有我的产品类) - 没有,同样的错误

2 个答案:

答案 0 :(得分:1)

实际上是出现此问题,因为您没有更改脚手架调用的目标。在程序包管理器控制台中,当您运行任何以Domain对象为目标的命令时,需要将Default Project下拉列表设置为您的Domain项目。如果您尝试针对Web项目运行迁移或数据库更新,则它们将失败。

修改

重要的是错误中的这一行

  

如果在Visual Studio中使用Code First Migrations,如果解决方案的startUp项目未引用包含迁移的项目,则会发生这种情况。

错误表明"Could not load assembly 'SportsStore.WebUI'这意味着迁移所在的项目,即使它们应该已经进入您的域项目。

答案 1 :(得分:1)

我也有这个错误。我有一个使用EF 5.0的现有asp.net mvc工作正常。

然后我创建了一个带有EF 5.0的控制台应用程序,它指向同一个数据库。 asp.net mvc应用程序开始抛出模型支持异常。

我注意到有一个名为“_ MigrationHistory”的新表。为了让asp.net应用程序再次运行,我将此表重命名为“ _MigrationHistory_backup”