1

Pro Asp.Net MVC book, 在我的 Asp.Net MVC4 解决方案中有两个项目的体育商店教程之后。一SportsStore.WebUI和一SportsStore.Domain,下面有我的产品类

Name我在我的模型类中添加了一个必需的属性

    //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 迁移,如果您的解决方案的启动项目未引用包含您的迁移的项目,则可能会发生这种情况。您可以将启动项目更改为您的解决方案或使用 -StartUpProjectName 参数。)”

这很奇怪,因为 A-我没有先使用代码,而 B-域项目确实引用了 WebUI 项目

解决方案 2:不起作用

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

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

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

4

2 回答 2

1

这个问题实际上正在发生,因为您没有更改调用脚手架的目标。在包管理器控制台中,当您运行任何针对域对象的命令时,需要将默认项目下拉菜单设置为您的域项目。如果您尝试针对您的 Web 项目运行迁移或数据库更新,它们将失败。

编辑

重要的是错误中的这一行

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

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

于 2013-08-21T18:55:43.697 回答
1

我也有这个错误。我有一个使用 EF 5.0 的现有 asp.net mvc,它运行良好。

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

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

于 2013-10-16T04:09:08.080 回答