我有一个在表中创建列的迁移。
public partial class AddName : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Name",
table: "MyTable",
nullable: false,
defaultValue: "Value 1");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Name",
table: "MyTable");
}
}
我用它更新我的数据库。我生成了一个新的迁移。
这最后一个应该是空的,但它包含一个无用的 AlterColumn
。
public partial class Test : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "MyTable",
nullable: false,
defaultValue: "Value 1",
oldClrType: typeof(string),
oldType: "nvarchar(max)");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "MyTable",
type: "nvarchar(max)",
nullable: false,
oldClrType: typeof(string),
oldDefaultValue: "Value 1");
}
}
要生成此迁移和更新数据库,我使用 dotnet-ef
cli。
我检查了一下,发现两次迁移之间没有区别。当我使用 Test
迁移更新数据库时,没有任何更改应用于表。
我还测试将我的数据库更新为 AddName
之前的迁移并重新创建它。但我有相同的结果。第二次迁移保持填充 AlterColumn
。
有人已经有这种奇怪的行为了吗?
最佳答案
问题是由更新 EF Core Tools 引起的到生成迁移之间的较新版本。使用不同版本的工具迁移生成的快照可能会有所不同。
关于.net - EFCore cli 生成无用的迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66371124/