我对使用 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
与模型类中的最新状态进行比较,并创建数据库更改以从当前状态变为最新状态。如果是这样,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.