首页 > 解决方案 > 在实体框架迁移中添加值取决于其他列值的列

问题描述

这是我的 ef 迁移代码,

   protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AddColumn<DateTime>(
            name: "ColumnNew",
            table: "MyTableName",
            nullable: true);
    }

所以,我的新栏目名称是ColumnNew. 我已经有了ColumnOneColumnTwo

我的问题是,如果ColumnOne's value 等于 1 ,我想将ColumnTwo's value 复制到ColumnNew.
我可以在迁移文件中执行此操作吗?

标签: entity-frameworkmigrationef-code-first

解决方案


创建新列后,您必须添加一条更新语句:

protected override void Up(MigrationBuilder migrationBuilder)
{
    migrationBuilder.AddColumn<DateTime>(
        name: "ColumnNew",
        table: "MyTableName",
        nullable: true);

    migrationBuilder.Sql("UPDATE MyTableName SET ColumnNew = ColumnTwo WHERE ColumnOne = 1");
}

推荐阅读