我有一个实体在分支 A 中有一列int
。现在我切换到另一个分支 B 。在那里,我创建了一个迁移和更改列到varchar
并运行Update-Database
。现在如果我再次切换到分支 A 。如果我在代码中看到列数据类型为int
,但在数据库中,其数据类型为varchar
。但我希望它的数据类型为int
。我甚至无法从分支<strong> A 中删除此迁移,因为它是在分支 B 中创建的。我只能看到解决此问题的一种方法是删除数据库并运行{ {1}},但这样做会丢失所有数据。有没有更好的方法来解决这个问题。
我正在使用实体框架核心2.0.1。
答案 0 :(得分:1)
我可以想到两个选择:
Update-Database name-of-previous-migration
例如,我们假设您有以下迁移:
20180214094058_Initial.cs
20180216100541_FirstMigration.cs
20180218185111_MigrationBranchB.cs
您可以使用MigrationBranchB
取消Update-Database FirstMigration
(这将调用Down
的{{1}}方法)。
恢复迁移
如果您已将迁移(或多次迁移)应用于数据库但需要还原它,则可以使用相同的命令来应用迁移,但指定要回滚到的迁移的名称。
MigrationBranchB