C# 实体框架:支持';EFDbContext';自创建数据库以来,上下文已更改
我正在从事一个使用EntityFramework和MVC的项目,我经常遇到以下错误: 自创建数据库以来,支持“EFDbContext”上下文的模型已更改 问题是没有挂起的迁移(我已尝试删除/重新创建数据库,但仍然出现错误) 我在网上读过几篇帖子,这些帖子让我觉得我不是唯一一个与这个错误作斗争的人 请在下面查找更多详细信息。 我们欢迎任何帮助来了解情况并解决问题 项目详细信息 我的解决方案中有三个项目:C# 实体框架:支持';EFDbContext';自创建数据库以来,上下文已更改,c#,asp.net-mvc,entity-framework,entity-framework-6,dbcontext,C#,Asp.net Mvc,Entity Framework,Entity Framework 6,Dbcontext,我正在从事一个使用EntityFramework和MVC的项目,我经常遇到以下错误: 自创建数据库以来,支持“EFDbContext”上下文的模型已更改 问题是没有挂起的迁移(我已尝试删除/重新创建数据库,但仍然出现错误) 我在网上读过几篇帖子,这些帖子让我觉得我不是唯一一个与这个错误作斗争的人 请在下面查找更多详细信息。 我们欢迎任何帮助来了解情况并解决问题 项目详细信息 我的解决方案中有三个项目: 核心:模型和与数据库的映射 GUI.MVC:一个web项目(使用来自核心的模型) 控制台:非
- 核心:模型和与数据库的映射
- GUI.MVC:一个web项目(使用来自核心的模型)
- 控制台:非web项目(使用相同的模型)
启用迁移-EnableAutomaticMigrations
。在核心项目中创建了一个新文件夹“Migrations”。情况是一样的:MVC项目起作用,而控制台不起作用updatedatabase
,并获得:
没有挂起的显式迁移。应用自动迁移:201408071410203\u自动迁移。运行Seed方法。
现在,MVC项目不再工作:当我尝试访问数据时,我得到了错误(模型支持…)。但是,控制台项目现在正在工作updatedatabase
,则不会得到任何挂起的显式迁移。运行Seed方法。我仍然在MVC项目中得到错误,并且Console项目正在工作- 实体框架6.1.1
- ASP.NET MVC 5.1.2
非常感谢 您可以打开调试器,我假设异常将在dbcontext或dbset的某个位置停止,并检查dbcontext或dbset变量,找到其dbcontext对象,然后检查base->Database->connectionstring属性,然后您应该看到它在抱怨哪个数据库。看起来您删除了错误的数据库。您在上下文中使用了哪个数据库初始值设定项?你能确认这两个项目实际上是在创建和使用同一个上下文类吗?更新数据库-听起来你的MVC项目并没有使用你认为是的数据库。检查您的连接字符串。此外,情况可能并非如此,但请注意,调试时不应用转换。因此,例如,如果您切换到“Release”配置,并希望使用
Web.Release.config
中的连接字符串,则实际情况并非如此。@Randrelov通常您必须在DbContext的静态构造函数中重写初始值设定项,调用数据库.SetInitializer()
。默认情况下,EF代码首先使用“首次使用时创建”;我不记得启用迁移是否会自动为您切换到“migrate to latest”(迁移到最新版本),或者您是否必须手动执行此操作,但您可以进行检查。使用调试器查看、登录到文件,或者只是在站点的某个位置打印context.Database.Connection.ConnectionString的值,其中,context
是一个变量,它在MVC项目中保存了EFDBContext
的一个实例。确认这是您期望的结果。