实体框架6.1强制迁移而不是使用已编辑的InitialCreate

时间:2017-02-01 20:53:22

标签: sql-server entity-framework-6 ef-migrations

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

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

由于我从服务器上删除了数据库,因此我没有预料到会出现此错误。没有更多迁移表,因此我希望使用InitialCreate.cs文件的修改版本来创建数据库。我试图避免在单个InitialCreate.cs文件中进行多次迁移。为什么该应用程序只使用直接编辑的InitialCreate.cs文件?为什么需要创建新的迁移文件?

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

1 个答案:

答案 0 :(得分:2)

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

1)删除所有迁移

2)使用add-migration MyStartingPoint -IgnoreChanges添加无操作迁移。这将拍摄模型当前状态的快照,而Up()/ Down()中没有代码。 update-database申请。

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

您可以随时删除所有迁移并重复此步骤,只要所有已部署的数据库都是最新的。您也可以删除上次迁移并重新添加它,它将从先前的迁移中获取所有差异。请参阅here