代码优先更新数据库错误“ApplicationDbContext”上下文已更改

Posted

技术标签:

【中文标题】代码优先更新数据库错误“ApplicationDbContext”上下文已更改【英文标题】:Code First Update Database Error 'ApplicationDbContext' context has changed 【发布时间】:2021-03-31 17:00:43 【问题描述】:

我将 MVC 5 和 EF 6 与 Code First 一起使用。每次我尝试登录时都会收到此错误:

支持“ApplicationDbContext”上下文的模型已更改 数据库已创建。考虑使用 Code First 迁移 更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。

这个程序可以开发 2 年,直到本周出现这个奇怪的错误。通常在我们更改模型后,我们只需简单地update-database 就可以了。今天我们尝试做同样的事情并且没有返回错误:

PM> update-database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
No pending explicit migrations.
Applying automatic migration: 202012212240459_AutomaticMigration.
Running Seed method.
PM>

我们正在使用自动迁移。但我只是尝试手动添加迁移并再次成功更新数据库,但仍然返回相同的错误。

我们尝试删除数据库并使用update-database 重新创建并创建了一个新数据库,创建了一个虚拟帐户,但仍然返回相同的错误。尝试关注并检查其他线程中的一些建议,但仍然没有得到好的结果。删除迁移历史解决了这个错误,但是当我们update-database 为将来的更新它会创建一个重复的错误,所以这不算作一个解决方案。我不知道要调试什么以及要检查什么。任何帮助表示赞赏。谢谢。

【问题讨论】:

您是否在更改模型后和更新数据库之前添加了新的迁移? @RobWhite 您好,我们正在使用自动迁移。但是我只是尝试手动添加迁移并成功运行更新数据库,但仍然返回错误。我会在问题中添加它 你遇到过这个***问题吗? ***.com/questions/14948205/…我不知道您的解决方案中是否有多个使用实体框架的项目。显然有不同的版本会导致这个问题 @RobWhite 是的,我们每次进行重大更改时都会这样做。当我说我们试图删除并重新创建数据库时,我的意思是像该线程中所说的那样做。 我指的不是主要答案,而是更进一步的线程(我不知道如何链接到特定答案)。您是否有多个使用实体框架的项目? 【参考方案1】:

我认为;你改变你的实体类, 1 - 检查您的实体 2 - 在 Context 类中检查您的 DbSet 4 检查您的实体框架版本 3-删除上次迁移并重新安装

【讨论】:

对不起,你知道你在发什么吗?

以上是关于代码优先更新数据库错误“ApplicationDbContext”上下文已更改的主要内容,如果未能解决你的问题,请参考以下文章

为数据库中新添加的列更新数据,代码优先

实体框架代码优先:迁移失败并更新数据库,强制不必要的(?)添加迁移

代码优先更新数据库使用未指定的localdb连接字符串

500 内部服务器错误:无意的代码优先异常

EF 6 数据库优先:如何更新存储过程?

EF - 代码优先 - SQL 默认值 getdate() 给出错误