【问题标题】:Entity Framework : The model backing the 'EFDbContext' context has changed since the database was created实体框架:支持“EFDbContext”上下文的模型自创建数据库以来已更改
【发布时间】:2014-09-30 20:43:25
【问题描述】:

我正在使用 EntityFramework 和 MVC 进行项目,但我不断收到此错误:

支持“EFDbContext”上下文的模型自数据库创建以来发生了变化。

问题是没有待处理的迁移(我尝试删除/重新创建数据库,但仍然出现错误)

我在网上阅读了几篇文章,让我觉得我不是唯一一个与这个错误作斗争的人。

请在下面找到更多详细信息。 欢迎任何帮助以了解情况并解决问题。

项目详情

我的解决方案中有三个项目:

  • 核心:模型和与数据库的映射
  • GUI.MVC : 一个 Web 项目(使用 Core 中的模型)
  • GUI.Console:非网络项目(使用相同的模型)

我正在尝试保持“代码优先”(我想只在代码中工作,让 EF 处理数据库)

一步一步

  1. 我已删除 Core 项目中的数据库和“Migrations”文件夹以“从头开始”。

  2. 我运行 GUI.MVC 项目:浏览时没有错误,当我访问基于它的视图时,数据库是“即时”创建的。

  3. 但是,如果我运行 GUI.Console 项目,则会收到错误消息。

  4. 我打开包管理器控制台,将 Core 项目作为默认项目(在下拉列表中),并将 MVC 项目(在 Web.config 中带有连接字符串)作为启动项目

  5. 我运行命令Enable-Migrations -EnableAutomaticMigrations。在 Core 项目中创建了一个新文件夹“Migrations”。情况是一样的:MVC 项目有效,控制台无效。

  6. 我运行命令Update-Database,得到: No pending explicit migrations. Applying automatic migration: 201408071410203_AutomaticMigration. Running Seed method. 现在,MVC 项目不再工作:当我尝试访问数据时出现错误(模型支持...)。但是,控制台项目现在正在运行!

  7. 如果我重新运行命令Update-Database,我得到No pending explicit migrations. Running Seed method.,我仍然在MVC项目中得到错误,并且Console项目正在运行。

配置

Nuget 包

  • 实体框架 6.1.1
  • ASP.NET MVC 5.1.2

Visual Studio 2013 更新 2

非常感谢!

【问题讨论】:

  • 您在上下文中使用了哪个数据库初始化程序?您能否确认这两个项目实际上是在创建和使用相同的上下文类?
  • 更新数据库-Force
  • 听起来你的 MVC 项目没有使用你认为的数据库。检查您的连接字符串。此外,可能并非如此,但请注意在调试时不应用转换。因此,例如,如果您切换到“发布”配置并希望使用 Web.Release.config 中的连接字符串,则不是。
  • @Randrelov 通常你必须重写 DbContext 的静态构造函数中的初始化程序,调用 Database.SetInitializer()。默认情况下,EF Code First 使用“首次使用时创建”;我不记得启用迁移是否会自动为您切换到“迁移到最新”,或者您是否必须手动执行,但您可以检查一下。
  • 使用调试器查看、记录到文件或只是在您的站点上某处打印context.Database.Connection.ConnectionString 的值,其中context 是一个变量,其中包含您的EFDBContext 实例MVC 项目。确认这是您所期望的。

标签: c# asp.net-mvc entity-framework entity-framework-6 dbcontext


【解决方案1】:

您可以打开调试器,我假设异常将在 dbcontext 或 dbset 之一处停止,并检查 dbcontext 或 dbset 变量,找到它的 dbcontext 对象,然后检查 base -> Database -> connectionstring 属性,那么您应该查看它在抱怨哪个数据库。看起来您正在删除错误的数据库。

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2011-04-05
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多