【问题标题】:EF Core Migration Add - creates a migration with unexpected DropForeignKey, DropUniqueConstraint, DropColumn statementsEF Core Migration Add - 使用意外的 DropForeignKey、DropUniqueConstraint、DropColumn 语句创建迁移
【发布时间】:2019-05-18 01:50:00
【问题描述】:

我对使用 EF Core 的应用进行了一些简单的更改。我刚刚更改了几个 Decimal 类型列的精度,就是这样。当我尝试使用 dotnet ef migrations add ... 命令创建新迁移时,我看到了我希望看到的迁移语句:

        migrationBuilder.AlterColumn<decimal>(
            name: "Value_Amount",
            schema: "Payment",
            table: "Withdrawals",
            type: "DECIMAL(18, 5)",
            nullable: false,
            oldClrType: typeof(decimal),
            oldType: "DECIMAL(15, 2)");

除了显示大量奇怪的DropForeignKeyDropUniqueConstraintDropColumn 语句之外,一切看起来都很好。我经历了很多,DropX 语句中引用的列甚至都不存在于数据库或模型类中。这些DropX 语句中的列名通常以X_TempIdX_TempId1 等结尾。

我让我的同事检查(使用 git)与我完全相同的分支并运行完全相同的命令(使用完全相同的 dotnet 版本),但他的迁移没有显示任何奇怪的 DropXYZ 语句。如果我错了,请纠正我,但我相信dotnet ef migrations add ... 命令会将SomethingModelSnapshot 的当前状态与模型类中的最新状态进行比较,并创建数据库更改以从当前状态变为最新状态。如果是这样,在同一个文件集上运行dotnet ef migrations add ... 命令应该总是产生相同的结果,不是吗?

对可能发生的情况和/或如何解决此问题有任何想法吗?

一些版本:

dotnet --version = 2.2.100
dotnet ef --version = 2.2.0-rtm-35687
<TargetFramework>netcoreapp2.1</TargetFramework>
Windows 10, commands executed via Powershell.

【问题讨论】:

    标签: .net-core entity-framework-core ef-core-2.2


    【解决方案1】:

    经过一番调查,这似乎是 EF Core 的一个错误。你可以在这里on their github追踪它。

    这发生在从 2.1 升级到 2.2 之后。但请注意,这不仅仅是 EF Core 2.2 的错误,因为从头开始重新创建新迁移在 2.2 上运行良好,但这更多的是解释模型快照的重大变化。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。我也在使用 Core 2.2。能够通过进行新的初始迁移来解决它。之后的新迁移没有这个问题。

      【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2023-03-09
      • 2020-11-12
      • 2020-07-14
      • 2018-02-01
      • 2014-12-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      相关资源
      最近更新 更多