EntityFramework EF赢得';Don’不要让我重新搭脚手架

本文关键字:脚手架 新搭 赢得 EF Don EntityFramework | 更新日期: 2023-09-27 18:27:39

我已经成功地完成了多次这种过程,但第一次似乎不起作用。我想合并我的应用程序的两个分支,它们具有不同的代码优先迁移状态。我知道,在两个版本的开发过程中,两个版本中的模式都发生了变化,导致了不同的快照,所以我需要重新构建合并的迁移以匹配数据库快照,基本上遵循本指南选项2。在给定的项目中,我有几十个迁移,其中多个迁移被合并并成功地重新搭建。

因此,我所做的是将数据库状态恢复到迁移前的数据库版本(例如Update-Database -targetMigration 201511261243087_BeforeMigration,指南的步骤4),并按正确的顺序重新构建合并的迁移,这样他们就可以重新构建元数据。

当我使用命令Add-Migration 201512170931290_FirstMergedMigration时,我会收到以下错误消息:

由于以下原因,无法生成显式迁移显式迁移处于挂起状态:[201512170931290_FirstMergedMigration,201512140935307_SecondMergedMigration]。应用挂起的显式迁移,然后尝试生成新的显式迁移。

什么?我没想到会这样。我期望该命令重新构建现有迁移的元数据并更新Schema快照。但这是假设我想添加一个新的迁移。-force标志也没有帮助。

当我遵循推荐的步骤和Update-Database时,EF将创建一个新的迁移,称为:201512210931290_201512170931290_FirstMergedMigration。现在THAT真的很疯狂。

我希望有一个单独的命令来重新构建元数据,这样它可能会显示更清晰的错误消息。

有人见过这个吗?

更新:

看看我自己的答案。

EntityFramework EF赢得';Don’不要让我重新搭脚手架

好吧,看来我在这里发现了问题。。。我试图重新构建脚手架的第一次迁移似乎没有包含任何架构更改,因为它只是添加索引等。如果EF在给定的迁移中没有检测到更改,它似乎会尝试添加新的迁移。我所能做的就是跳过迁移,继续下一次迁移,这导致了预期的:

仅迁移设计器代码"201512140935307_SecondMergedMigration"被重新搭建。到重新构建整个迁移的脚手架,使用-Force参数。

我检查了数据库,__MigrationHistory看起来不错,Tables也不错。如果EF生成了一个更好的错误消息,而不是试图添加一个新的迁移,这将意味着更少的麻烦。