【发布时间】: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