繁体   English   中英

实体框架迁移问题。 [无法生成显式迁移,因为以下显式迁移正在处理中]

[英]Issue with entity framework migration. [Unable to generate an explicit migration because the following explicit migrations are pending]

我首先使用EF代码和asp.net MVC。 这是我的技术栈。

  1. Visual Studio 2010
  2. 实体框架4.3.1

在我的迁移文件夹中,可以看到存在三个迁移文件。

  1. 初始创建
  2. AddStandardException
  3. 文件范围

当我检查数据库时,可以看到_MigrationHistory表已应用所有三个迁移。 现在,我又添加了一个DbSet,我想为其编写迁移。 当我尝试发出此命令时

Add-Migration NewTable

它给了我这个错误:

无法进行显式迁移,因为以下显式迁移未决:[201402121621095_AddStandardException,201402190713571_DocumentScope]。 在尝试生成新的显式迁移之前,请应用未决的显式迁移。

我不明白为什么所有已应用的迁移都抱怨挂起的迁移?

我该如何解决呢? 我尝试使用-Debug开关,但是没有运气。

我找到了解决方法。 我刚刚在Up()和Down()函数中注释了代码。 然后运行更新数据库。 它应用了一些虚拟迁移,然后报告说

无法更新数据库以匹配当前模型,因为有未决的更改并且自动迁移被禁用。 将待处理的模型更改写到基于代码的迁移中,或者启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。

之后,当我跑步

添加迁移新表

它给了我正确的结果。 知道这里发生了什么吗?

您需要从程序包管理器控制台运行“ update-database ”以将更改推送到数据库,或者可以从Migrations文件夹中删除挂起的迁移文件([201402121621095_AddStandardException]),然后重新运行“ add-migration”到根据您的修改创建一个全新的迁移。

说明 :“ update-database”基本上修改了现有的表字段,而“ add-migration”则像git一样通过对不同模型更改进行快照来工作。 这些快照显示了数据库如何随时间演变,因此它们对您的代码用户比EF或App本身更有用。
话虽这么说,您的较新类可能具有完全不同的代码签名,而这些签名可能不会与现有类“流动”在一起。
解决方案:修改或删除以前的迁移,因为新的迁移将创建将不使用或不需要的新数据结构

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM