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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了切换分支时如何解决Update-Database问题?相关的知识,希望对你有一定的参考价值。

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

我正在使用实体框架核心2.0.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

以上是关于切换分支时如何解决Update-Database问题?的主要内容,如果未能解决你的问题,请参考以下文章

git切换分支时,如何保存当前分支的修改(暂时不想提交)

如何在修改bug时切换分支保留修改又不提交

eclipse git如何切换分支,合并分支,解决冲突等

eclipse git如何切换分支,合并分支,解决冲突等

GIT04_分支概述查看创建切换合并分支代码冲突如何定位解决

git切换分支冲突解决-删除分支