Entity Framework 6.1 正在强制迁移而不是使用已编辑的 InitialCreate

Entity Framework 6.1 is forcing migration instead of using edited InitialCreate

我有一个 C# 项目,我在其中使用 Entity Framework 6.1 来管理数据库。在开发过程中,我想为某些 table 添加更多字段。所以我编辑了 InitialCreate.cs 迁移以包含新字段,然后在 SQL 服务器中删除了我的数据库。当我转到 运行 Update-Database 时,出现以下错误 ...

Unable to update database to match the current model because there are pending changes and automatic migration is disabled

因为我已经从服务器上删除了数据库,所以我没想到会出现这个错误。没有更多的迁移 table 所以我希望 InitialCreate.cs 文件的修改版本用于创建数据库。我试图避免根据单个 InitialCreate.cs 文件进行多次迁移。为什么应用程序不直接使用直接编辑的 InitialCreate.cs 文件?为什么需要新建迁移文件?

我知道我可以在程序包管理器控制台中使用 Add-Migration,但我不想要多个迁移文件。我只想要一个。我认为代码优先我可以做到这一点。

在代码优先中,您应该在模型中进行所有更改,并通过初始化程序或迁移更新您的数据库。如果您想尽量减少迁移文件的数量,您可以随时删除(汇总)它们并重置您的基线:

1) 删除所有迁移

2) 使用 add-migration MyStartingPoint -IgnoreChanges 添加 no-op 迁移。这将在 Up()/Down() 中没有代码的情况下拍摄模型当前状态的快照。 update-database 申请。

3) 现在进行您需要的所有模型更改并添加一个新的迁移,这将是新的东西。

您可以随时删除所有迁移并重复此步骤,只要您部署的所有数据库都是最新的即可。您也可以只删除最后一次迁移并 re-add 它,它将拾取与先前迁移的所有差异。参见 here