EF Core Migration Add - 使用意外的DropForeignKey,DropUniqueConstraint,DropColumn语句创建迁移

问题描述 投票:3回答:2

我对使用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的当前状态与Model类中的最新状态进行比较,并创建DB更改以从当前状态转换到最新状态。如果是这样的话,在同一个文件集上运行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
2个回答
0
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.