【发布时间】: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)");
除了显示大量奇怪的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.
【问题讨论】:
标签: .net-core entity-framework-core ef-core-2.2