我以某种方式使我的EF5项目进入了我无法继续的状态。
当我做一个“更新-数据库”时,我得到:
无法更新数据库以与当前模型匹配,因为有挂起的更改,并且禁用了自动迁移。要么将挂起的模型更改写入基于代码的迁移,要么启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。您可以使用“添加迁移”命令将挂起的模型更改写入基于代码的迁移。
好吧,好吧,所以我试着‘添加迁移’,我得到:
无法生成显式迁移,因为下列显式迁移正在等待:在尝试生成新的显式迁移之前应用挂起的显式迁移。
20人,10人?
现在我该怎么办?(除了切换到NHibernate之外?)
发布于 2013-07-22 21:46:33
对我有用的是:
add-migration DummyMigration
。产生了一些我评论过的虚假的变化update-database
将迁移+元数据添加到[__MigrationHistory]
表中。add-migration
/update-database
。不太理想,看看是否有更好的解决方案会很酷,但这对我来说是有效的。
发布于 2014-01-10 17:51:07
对我来说,问题是我们重新命名了迁移2014123456_Initial.cs的名称空间。
但是VS没有在其关联的2014123456_Initial.Designer.cs中重新生成名称空间。
一旦Designer.cs被更改为使用相同的命名空间,它就会再次开始工作。
(还将此作为这里的答案发布,因为这两个问题非常相似)
发布于 2016-10-18 11:43:23
我将Configuration.cs
类中的以下值从false
更改为true
。
AutomaticMigrationsEnabled = true;
在App_Data文件夹中,我重命名了项目的数据库--以.mdf结尾的文件(因此将创建一个新的),并且在Package控制台中输入了以下命令:
update-database
之后,挂起的迁移顺利进行。
注意,这对我有效,但如果这是最佳实践的话,我不是100%。在任何情况下,这个实体框架代码迁移指南都说:
“如果您收到一个指示表已经存在且无法创建的错误,可能是因为您在删除数据库之后和执行更新-数据库之前运行了应用程序。在这种情况下,再次删除Movies.mdf文件并重新尝试更新-数据库命令。如果仍然有错误,请删除迁移文件夹.”
同样关于AutomaticMigrationsEnabled = true;
,MSDN文章,数据点:代码第一步的奥秘:解决告诉我们“移动可以自动运行,这意味着将发现模型更改,并在数据库上创建和执行与更改相对应的迁移。所有这些都发生在数据库初始化过程中。自动迁移对于简单的应用程序来说很方便,但是您对它们几乎没有控制,我通常不建议启用它们。当代码第一次将默认值切换为false时,我很高兴。”
https://stackoverflow.com/questions/16952413
复制相似问题