实体框架:支持' EFDbContext'自创建数据库以来,上下文已更改

时间:2014-08-07 14:40:17

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

我正在使用EntityFramework和MVC开展项目,我不断收到此错误:

  

自创建数据库以来,支持'EFDbContext'上下文的模型已发生变化。

问题是没有挂起的迁移(我试图删除/重新创建数据库,但我仍然收到错误)

我在网上看过几篇帖子让我觉得我不是唯一一个为这个错误而奋斗的人。

请在下面找到更多详情。 欢迎任何帮助以了解情况并加以解决。

项目详情

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

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

我正在努力保持“Code First”(我只想在代码中工作,让EF处理数据库)

步骤一步

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

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

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

  4. 我打开包管理器控制台,将Core项目作为默认项目(在下拉列表中)和MVC项目(在Web.config中使用connexionstring)作为启动项目

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

  6. 我运行命令Update-Database,然后获取: No pending explicit migrations. Applying automatic migration: 201408071410203_AutomaticMigration. Running Seed method.现在,MVC项目不再有效:当我尝试访问数据时,我收到错误(模型支持...)。但是,Console项目现在正在运行!

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

  8. 配置

    Nuget包

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

    Visual Studio 2013 Update 2

    非常感谢!

1 个答案:

答案 0 :(得分:0)

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