切换分支时如何解决Update-Database问题?

问题描述 投票:-1回答:1

我有一个实体在分支A中有一个列为int。现在我切换到另一个分支B.我创建了一个迁移并更改列到varchar并运行Update-Database。现在如果我再次切换到分支A.如果我在代码中看到列数据类型是int,但在数据库中,其数据类型是varchar。但我希望它的数据类型是int。我甚至无法从分支A中删除此迁移,因为它是在分支B中创建的。我只能看到解决此问题的一种方法是删除数据库并运行Update-Database,但这样做会丢失所有数据。有没有更好的方法来解决这个问题。

我正在使用实体框架核心2.0.1。

c# asp.net-core ef-code-first entity-framework-core aspnetboilerplate
1个回答
1
投票

我可以想到两个选择:

  1. 为每个分支使用不同的数据库(可能是最好的主意,恕我直言)
  2. 在切换回分支A之前,使用Update-Database name-of-previous-migration从数据库中取消应用迁移

例如,假设您有以下迁移:

  • 20180214094058_Initial.cs
  • 20180216100541_FirstMigration.cs
  • 20180218185111_MigrationBranchB.cs

你可以用MigrationBranchB取消Update-Database FirstMigration(这将称为DownMigrationBranchB方法)。

相关的documentation

恢复迁移

如果已将迁移(或多次迁移)应用于数据库但需要还原,则可以使用相同的命令应用迁移,但指定要回滚的迁移的名称。

Update-Database LastGoodMigration

© www.soinside.com 2019 - 2024. All rights reserved.