首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >困于EF迁移边缘

困于EF迁移边缘
EN

Stack Overflow用户
提问于 2013-06-06 01:38:38
回答 7查看 9.8K关注 0票数 25

我以某种方式使我的EF5项目进入了我无法继续的状态。

当我做一个“更新-数据库”时,我得到:

无法更新数据库以与当前模型匹配,因为有挂起的更改,并且禁用了自动迁移。要么将挂起的模型更改写入基于代码的迁移,要么启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。您可以使用“添加迁移”命令将挂起的模型更改写入基于代码的迁移。

好吧,好吧,所以我试着‘添加迁移’,我得到:

无法生成显式迁移,因为下列显式迁移正在等待:在尝试生成新的显式迁移之前应用挂起的显式迁移。

20人,10人?

现在我该怎么办?(除了切换到NHibernate之外?)

EN

回答 7

Stack Overflow用户

发布于 2013-07-22 21:46:33

对我有用的是:

  1. 将我的所有更改(首先进行备份)恢复到已知的良好状态。
  2. add-migration DummyMigration。产生了一些我评论过的虚假的变化
  3. 调用update-database将迁移+元数据添加到[__MigrationHistory]表中。
  4. 进行我需要的更改(从我之前所做代码的备份)。
  5. 做正常的add-migration/update-database

不太理想,看看是否有更好的解决方案会很酷,但这对我来说是有效的。

票数 7
EN

Stack Overflow用户

发布于 2014-01-10 17:51:07

对我来说,问题是我们重新命名了迁移2014123456_Initial.cs的名称空间。

但是VS没有在其关联的2014123456_Initial.Designer.cs中重新生成名称空间。

一旦Designer.cs被更改为使用相同的命名空间,它就会再次开始工作。

(还将此作为这里的答案发布,因为这两个问题非常相似)

票数 2
EN

Stack Overflow用户

发布于 2016-10-18 11:43:23

我将Configuration.cs类中的以下值从false更改为true

代码语言:javascript
运行
复制
AutomaticMigrationsEnabled = true; 

在App_Data文件夹中,我重命名了项目的数据库--以.mdf结尾的文件(因此将创建一个新的),并且在Package控制台中输入了以下命令:

update-database

之后,挂起的迁移顺利进行。

注意,这对我有效,但如果这是最佳实践的话,我不是100%。在任何情况下,这个实体框架代码迁移指南都说:

“如果您收到一个指示表已经存在且无法创建的错误,可能是因为您在删除数据库之后和执行更新-数据库之前运行了应用程序。在这种情况下,再次删除Movies.mdf文件并重新尝试更新-数据库命令。如果仍然有错误,请删除迁移文件夹.”

同样关于AutomaticMigrationsEnabled = true;MSDN文章,数据点:代码第一步的奥秘:解决告诉我们“移动可以自动运行,这意味着将发现模型更改,并在数据库上创建和执行与更改相对应的迁移。所有这些都发生在数据库初始化过程中。自动迁移对于简单的应用程序来说很方便,但是您对它们几乎没有控制,我通常不建议启用它们。当代码第一次将默认值切换为false时,我很高兴。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16952413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档