切换分支时如何解决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。
答案
我可以想到两个选择:
- 为每个分支使用不同的数据库(可能是最好的主意,恕我直言)
- 在切换回分支A之前,使用
Update-Database name-of-previous-migration
从数据库中取消应用迁移
例如,假设您有以下迁移:
20180214094058_Initial.cs
20180216100541_FirstMigration.cs
20180218185111_MigrationBranchB.cs
你可以用MigrationBranchB
取消Update-Database FirstMigration
(这将称为Down
的MigrationBranchB
方法)。
相关的documentation:
恢复迁移
如果已将迁移(或多次迁移)应用于数据库但需要还原,则可以使用相同的命令应用迁移,但指定要回滚的迁移的名称。
Update-Database LastGoodMigration
以上是关于切换分支时如何解决Update-Database问题?的主要内容,如果未能解决你的问题,请参考以下文章