按照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(具有我的产品类) - 没有,同样的错误
答案 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”