切换分支时如何解决更新数据库问题?

时间:2018-03-06 09:33:20

标签: c# asp.net-core ef-code-first entity-framework-core aspnetboilerplate

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

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

1 个答案:

答案 0 :(得分:1)

我可以想到两个选择:

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

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

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

    您可以使用MigrationBranchB取消Update-Database FirstMigration(这将调用Down的{​​{1}}方法)。

    相关documentation

      

    恢复迁移

         

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

         

    MigrationBranchB