Hop*_*ess 9 .net entity-framework-core
例如,有一个包含值的表:
Id CarModel
1 Passat
2 Land Cruiser
Run Code Online (Sandbox Code Playgroud)
并且需要添加不可为空的列Manufacturer。制造商的初始值(对于现有记录)应为:
For CarModel=Passat - VW
For CarModel=Land Cruiser - Toyota
etc.
Run Code Online (Sandbox Code Playgroud)
我的迁移:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Manufacturer",
table: "Cars",
nullable: false);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Iva*_*oev 15
没有真正好的方法可以做到这一点。您需要手动编辑生成的迁移,如下所示:
AddColumn)的列。nullabletrueSql使用方法和原始 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13347 次 |
| 最近记录: |