将迁移与实际更改同步

Sync migrations with actual changes

EF 迁移无法自动检测到一些复杂的更改,因此我创建了一个空迁移并手动对 Up()Down() 进行了更改。 我更新了数据库,一切都在正向和反向方向上工作。

但后来,当我进行更多更改并创建新迁移时,它会自动添加各种不需要的更改 - 因为我已经在之前的迁移中手动处理了它们.

我知道我可以删除所有迁移并从头开始,但这会产生太多问题,所以我不想那样做。

我该如何解决这个问题?

Up()Down() 函数中删除有问题的垃圾
编译
Update-Database

如果您没有之前发布的数据库,您始终可以建立新的基线。然后删除所有旧迁移 运行:

Add-Migration MyBaseline –IgnoreChanges
Update-Database

现在您的模型和数据库将同步,您可以更改模型并创建新的迁移。我通常会打开自动迁移,直到我准备好部署,然后我将它们滚动到一个单一的迁移中,我可以编写脚本给客户。

https://msdn.microsoft.com/en-us/data/dn579398.aspx#step3