【问题标题】:The model backing the 'EFDbContext' context has changed error支持“EFDbContext”上下文的模型已更改错误
【发布时间】:2013-08-24 06:56:27
【问题描述】:

按照Pro Asp.Net MVC book,的运动商店教程 我的 Asp.Net MVC4 解决方案中有两个项目。一个 SportsStore.WebUI 和一个 SportsStore.Domain ,下面有我的 Product 类

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

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

解决方案 2:无效

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

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

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

【问题讨论】:

  • 我不明白。您正在编辑 Product.cs 但您没有使用 Code-First?
  • 不,我没有先使用代码,根本没有 edmx。只是Web.CONfig中的一个连接字符串,一个手动编写的DBContext类和上面的产品类:(
  • 你所指的书中的代码是先行代码,但是通过先建表隐藏了它;当代码第一次创建表时,它们已经存在。但是,这与错误无关。
  • Oh.sorry 我以为代码首先提到了使用 Edmx。但是数据库仍然是在编写 product.cs 之前创建的
  • 你正在反向工作。您想使用实体框架,但不想让他创建您的数据库或模型。您仅将其用于连接。

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


【解决方案1】:

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

编辑

重要的是错误中的这一行

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

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

【讨论】:

  • 谢谢。就像从下拉菜单中选择正确的项目一样简单。但是当你不知道去哪里看时,一切都是无形的。 :)
  • 如果您在包管理器控制台中看不到默认项目下拉菜单,请稍微扩大拆分器,直到它出现。 (它不是部分可见的,也没有任何暗示,除非你这样做:它只有在完全伸展时才可见。我只是浪费了 1/2 小时试图解决这个烦恼)。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 2014-09-30
    • 2013-03-30
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2018-11-14
    相关资源
    最近更新 更多