EF6代码迁移 - 数据库是不同的,但是相同

时间:2014-09-24 13:55:31

标签: c# entity-framework ef-migrations

很抱歉发布这样的一般性问题,但是对于多种情况可能会有多个答案(我可能需要在得到答案之前重新创建数据库),所以这里有:

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

  

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

     

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

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

  • 数据库的__MigrationHistory表与项目中的迁移相匹配。
  • 如果我执行“添加迁移”,它会出现空的Up& Down方法。
  • 我们将数据库从几个晚上(当我们知道它工作时)恢复到临时数据库并进行了比较,没有发现结构变化。
  • 我甚至尝试在空迁移上运行“update-database”,但是仍然会发生错误。

有关这种情况如何发生的任何想法?

1 个答案:

答案 0 :(得分:6)

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

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

最终让我们失望的是在__MigrationHistory表中看到了更新的ProductVersion。

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

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