【问题标题】:How to update new migrations changes?如何更新新的迁移更改?
【发布时间】:2021-09-16 18:57:50
【问题描述】:

在实体框架核心中,我使用以下命令创建了初始迁移

dotnet ef migrations add InitialCreate
dotnet ef database update

使用此命令,使用 C# 实体类中的一些初始表创建数据库。

然后我尝试添加新的 C# 实体类(或将来更新我的实体类)。

我需要使用较新的更改来更新数据库。我该怎么做?

当尝试再次应用相同的命令时

   dotnet ef migrations add NameOfNewScript
   dotnet ef database update

使用第一个命令,更改会反映在代码中,并且还会在迁移文件夹中创建新的迁移文件。 但是使用第二个命令我收到错误:

一个对象已经存在于数据库中。 (已为第一次创建)

但是当手动删除数据库然后应用命令时它可以工作。

那么我们如何在不删除数据库的情况下管理它并且只应用后期更改?

【问题讨论】:

  • 第二次迁移是否包含在第一次迁移中创建的对象的创建?

标签: c# entity-framework-core


【解决方案1】:

你试过 -force 命令吗? IE: 添加迁移-InitialCreate 更新数据库

【讨论】:

    【解决方案2】:

    dotnet ef 数据库更新 NameOfNewScript -v

    试试这个。 希望这对你有用。

    【讨论】:

      【解决方案3】:

      检查数据库中的“__EFMigrationsHistory”表。您可能在更新后删除并重新创建了 InitialCreate 迁移。在这种情况下,ef 认为它是新的并尝试应用它。

      如果您的代码和数据库的迁移 id 之间存在差异,您应该清除您的数据库并开始清理(如果只有一些测试数据)或更改历史表中的 id 并检查数据库是否有任何问题是应该的。

      MigrationId ProductVersion
      20210728111143_Initial 5.0.6

      20210903073446_Initial.cs 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 2014-08-09
        相关资源
        最近更新 更多