gpt4 book ai didi

.net - 如何使用 EF 迁移将新列添加到现有表并根据现有列设置其值

转载 作者:行者123 更新时间:2023-12-04 01:47:34 25 4
gpt4 key购买 nike

例如有一个带有值的表:

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);
}

我怎样才能做到这一点?

最佳答案

没有很好的方法来做到这一点。您需要手动编辑生成的迁移,如下所示:

  • 修改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);
    }

    关于.net - 如何使用 EF 迁移将新列添加到现有表并根据现有列设置其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629811/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com