我有一个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
,但我不想要多个迁移文件。我只想要一个。我以代码优先思考,我可以做到这一点。
答案 0 :(得分:2)
首先在代码中,您应该在模型中进行所有更改,然后通过初始化程序或迁移来更新数据库。如果要最小化迁移文件的数量,可以随时删除(汇总)它们并重置基线:
1)删除所有迁移
2)使用add-migration MyStartingPoint -IgnoreChanges
添加无操作迁移。这将拍摄模型当前状态的快照,而Up()/ Down()中没有代码。 update-database
申请。
3)现在进行所需的所有模型更改,并添加一个新的迁移,这将只是新的东西。
您可以随时删除所有迁移并重复此步骤,只要所有已部署的数据库都是最新的。您也可以删除上次迁移并重新添加它,它将从先前的迁移中获取所有差异。请参阅here。