【问题标题】:EF6 Code Migrations - Database is different, yet the sameEF6 代码迁移 - 数据库不同,但相同
【发布时间】:2014-09-24 13:55:30
【问题描述】:

很抱歉发布这样一个一般性问题,但这可能有多种情况的多个答案(我可能必须重新创建数据库才能得到答案),所以这里是:

我们有一个使用 EF6 的 C# 项目,几个月来一直成功地使用 EF 迁移。今天早上,当我尝试运行我的项目时,我得到了这个非常熟悉的错误:

System.Data.Entity.Migrations.Infrastructure.AutomaticMigrationsDisabledException' 发生在 EntityFramework.dll 中,但未在用户代码中处理

附加信息:无法更新数据库以匹配当前模型,因为存在待处理的更改并且自动迁移已禁用。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。

除了我找不到任何改变的证据。

  • 数据库的 __MigrationHistory 表与项目中的迁移匹配。
  • 如果我执行“添加迁移”,它会提供空的 Up 和 Down 方法。
  • 我们将几天前的数据库(当我们知道它有效时)恢复到临时数据库并进行了比较,但没有发现结构变化。
  • 我什至尝试在空迁移上运行“update-database”,它有效,但错误仍然存​​在。

对这种情况如何发生有任何想法吗?

【问题讨论】:

  • 您是否运行过“启用迁移”命令?然后运行“更新数据库”。或使用更新数据库-force。如果没有检查 AutomaticMigrationsEnabled 并设置为 AutomaticMigrationsEnabled = true
  • "enable-migrations" 表示“迁移已启用”。 “update-database -force”表示“没有挂起的显式迁移”。之后,如果我运行该项目,我仍然会收到错误。
  • 将 -ConnectionProviderName 和 -ConnectionString 与您的 add-migration 和 update-database 一起使用,以确保迁移使用正确的数据库,我的项目中有类似的问题。

标签: c# entity-framework entity-framework-migrations


【解决方案1】:

我们发现了问题。我们解决方案中的 Core 项目已从 EF 6.0.2 升级到 EF 6.1.1,但 MVC 项目没有。

这在几天前最初完成时并没有引起问题。但是昨天,一位团队成员使用新版本创建了第一个迁移(只是添加了数据,没有结构更改)。迁移运行后,MVC 项目将无法再与数据库交互。

最终告诉我们的是在 __MigrationHistory 表中看到了一个更新的 ProductVersion。

我升级 MVC 项目后,问题就解决了。

感谢那些提出建议的人。希望如果其他人有同样的症状,他们可以在这些帖子中找到答案。

【讨论】:

  • 你“升级了 mvc 项目”是什么意思?
  • 升级的实体框架;参考答案中的第一段。
猜你喜欢
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 2015-12-04
  • 2017-12-28
  • 2020-12-15
  • 1970-01-01
相关资源
最近更新 更多