例如,有一个具有值的表:
Id CarModel
1 Passat
2 Land Cruiser并需要添加非空列制造商。制造商(现有记录)的初始值应为:
For CarModel=Passat - VW
For CarModel=Land Cruiser - Toyota
etc.我的迁徙:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Manufacturer",
table: "Cars",
nullable: false);
}我该怎么做?
发布于 2019-02-12 12:55:58
不是很好的方法。您需要手动编辑生成的迁移,如下所示:
AddColumn命令以创建列,最初将nullable设置为true (即可选)。Sql方法和原始SQL命令填充列。AlterColumn命令以将列nullable更改为预期的false (即必需的)。就像这样:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Manufacturer",
table: "Cars",
nullable: true);
migrationBuilder.Sql(
@"UPDATE Cars SET Manufacturer = CASE CarModel
WHEN 'Passat' THEN 'VW'
WHEN 'Land Cruiser' THEN 'Toyota'
ELSE 'Other' END");
migrationBuilder.AlterColumn<string>(
name: "Manufacturer",
table: "Cars",
nullable: false,
oldClrType: typeof(string),
oldNullable: true);
}https://stackoverflow.com/questions/54629811
复制相似问题