EF Core Migration Add - 使用意外的DropForeignKey,DropUniqueConstraint,DropColumn语句创建迁移
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF Core Migration Add - 使用意外的DropForeignKey,DropUniqueConstraint,DropColumn语句创建迁移相关的知识,希望对你有一定的参考价值。
我对使用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)");
一切看起来都不错,它也显示出大量奇怪的DropForeignKey
,DropUniqueConstraint
,DropColumn
声明。我经历了其中的一些,并且DropX
语句中引用的列都没有存在于数据库或模型类中。这些DropX
语句中的列名通常以X_TempId
,X_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.
我有同样的问题。我也在使用Core 2.2。能够通过进行新的初始迁移来绕过它。之后的新迁移没有这个问题。
经过一些调查,似乎这是EF Core的一个错误。你可以在这里跟踪on their github。
这是在从2.1升级到2.2后发生的。但是请注意,这不仅仅是EF Core 2.2的一个错误,因为从头开始重新创建一个新的迁移在2.2上运行得很漂亮,但这更像是解释模型快照的一个重大变化。
以上是关于EF Core Migration Add - 使用意外的DropForeignKey,DropUniqueConstraint,DropColumn语句创建迁移的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core EF Add-Migration 命令不起作用
EF Core Migration Add - 使用意外的DropForeignKey,DropUniqueConstraint,DropColumn语句创建迁移