Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 切换分支时如何解决更新数据库问题?_C#_Asp.net Core_Ef Code First_Entity Framework Core_Aspnetboilerplate - Fatal编程技术网

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

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

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


我正在使用entity framework core 2.0.1。

我可以想到两个选项:

  • 为每个分支使用不同的数据库(IMHO,这可能是最好的主意)
  • 在切换回分支A之前,使用
    更新上一次迁移的数据库名称
  • 例如,假设您有以下迁移:

    • 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中?