实体框架迁移未检测到所有更改

问题描述 投票:0回答:2

我承认这个问题的根源可能在我身上,但我无法让Entity Framework“恢复”。情况是我正在创建新的迁移,而Entity Framework没有检测到我的模型的所有更改。它检测到一些(最新的),但不检测以前的(没有迁移)。

为什么会这样,是我首先对模型进行了一些更改并创建了一个迁移。一切都很完美。然后我再次更改了模型,因为它只在我的开发机器上,我删除了以前的迁移并重新创建它。这就是问题的起源。我知道我根本不应该删除迁移,但已完成的工作已完成。

我有代码第一个数据库,所以我决定核对数据库(LocalDB),核对最新的迁移文件(没有所有的更改)。然后更新数据库并尝试添加新的迁移。仍然不是所有的变化。

所以我认为EF正在某些我无法看到它的模型快照。哪里?任何想法如何从这种情况中恢复并让EF重新创建迁移与模型的缺失更改?

entity-framework ef-migrations
2个回答
2
投票

正如您已经发现的那样,EF保留了一个Hashcode来跟踪迁移之间的模型更改。您可以通过查看数据库中的[dbo].[__MigrationHistory]表来查看此信息。

因此,您不应该只删除已经应用的迁移的.cs文件。而是执行以下操作:

1)使用Update-Database -TargetMigration [Name of the migration right before the migration you want to delete]回滚旧迁移

2)删除旧的迁移.cs文件

3)使用Add-Migration添加新的迁移

我希望你仍然在某处删除了迁移的.cs文件,否则回滚将证明是有问题的:/如果你从一个新的数据库开始,只将它更新到最后一次良好的迁移(再次使用-TargetMigration参数)并从那里开始。


0
投票

我正在使用Entity Framework Core,我在Update-Database之后遇到了这种情况,以及之前的迁移,并删除了几次迁移(打算整合我在问题解决时所做的一系列更改)。清除所有/ bin / obj目录没有帮助,也没有清理。

最终我发现它更新了文件{您的上下文名称} ModelSnapshot.cs。我还原了对该文件的所有更改,EF Core最终在下次运行Add-Migration时发现了所有模型更改。

© www.soinside.com 2019 - 2024. All rights reserved.