C# 切换分支时如何解决更新数据库问题?
我有一个实体,在分支a中有一列C# 切换分支时如何解决更新数据库问题?,c#,asp.net-core,ef-code-first,entity-framework-core,aspnetboilerplate,C#,Asp.net Core,Ef Code First,Entity Framework Core,Aspnetboilerplate,我有一个实体,在分支a中有一列int。现在我切换到另一个分支B。在那里,我创建了一个迁移并将列更改为varchar,然后运行updatedatabase。现在,如果我再次切换到分支A。如果我在代码中看到列数据类型是int,但在数据库中,其数据类型是varchar。但是我希望它的数据类型是int。我甚至无法从分支A删除此迁移,因为它是在分支B中创建的。我只能看到解决此问题的一种方法是删除数据库并运行更新数据库,但这样做会丢失所有数据。有没有更好的办法来解决这个问题 我正在使用entity fram
int
。现在我切换到另一个分支B。在那里,我创建了一个迁移并将列更改为varchar
,然后运行updatedatabase
。现在,如果我再次切换到分支A。如果我在代码中看到列数据类型是int
,但在数据库中,其数据类型是varchar
。但是我希望它的数据类型是int
。我甚至无法从分支A删除此迁移,因为它是在分支B中创建的。我只能看到解决此问题的一种方法是删除数据库并运行更新数据库
,但这样做会丢失所有数据。有没有更好的办法来解决这个问题
我正在使用entity framework core 2.0.1。我可以想到两个选项:
更新上一次迁移的数据库名称
20180214094058_Initial.cs
20180216100541\u FirstMigration.cs
20180218185111_MigrationBranchB.cs
updatedatabasefirstmigration
取消应用MigrationBranchB
(这将调用MigrationBranchB
的方法)
相关:
恢复迁移
如果已经对数据库应用了迁移(或多次迁移),但需要将其还原,则可以使用相同的命令应用迁移,但指定要回滚到的迁移的名称
更新数据库LastGoodMigration
我可以想出两个选择:
为每个分支使用不同的数据库(IMHO,这可能是最好的主意)
在切换回分支A之前,使用更新上一次迁移的数据库名称
例如,假设您有以下迁移:
20180214094058_Initial.cs
20180216100541\u FirstMigration.cs
20180218185111_MigrationBranchB.cs
您可以使用updatedatabasefirstmigration
取消应用MigrationBranchB
(这将调用MigrationBranchB
的方法)
相关:
恢复迁移
如果已经对数据库应用了迁移(或多次迁移),但需要将其还原,则可以使用相同的命令应用迁移,但指定要回滚到的迁移的名称
更新数据库LastGoodMigration
但我希望最终将这些更改应用于实际数据库和现有数据。如果我理解正确,您在分支B中应用了一个错误的迁移(您需要一个int),您希望保留列中的数据,但是作为int而不是varchar
?让我们假设分支A是主分支,我有一个功能分支B。我将指向同一个DB。迁移是有意的,因此您可以将分支B合并到分支A中?但我希望最终将这些更改应用到实际数据库和现有数据。如果我理解正确,您在分支B中应用了一个错误的迁移(您想要一个int),您想要保留列中的数据,但是作为int而不是varchar
?假设分支a是主分支,我有一个功能分支B。我将指向同一个DB。迁移是有意的,所以您可以将分支B合并到分支a中?