有没有办法将新列的默认值设置为实体中的现有值(每行唯一)?

时间:2018-02-23 17:31:38

标签: c# entity-framework

我有一个带DateCreated字段的表格。我想添加另一个日期字段用于排序目的(事件可以触发一个度假胜地)。

有没有办法将新字段DateSortBy设置为迁移文件中DateCreated的现有值?

我生成的Up()函数如下所示:

public override void Up()
{
    AddColumn("dbo.MyTable", "DateSortBy", c => c.DateTimeOffset(nullable: false, precision: 7));
}

我基本上希望数据看起来像这样

| Id | DateCreated  | DateSortBy   |
| 01 | Feb 18, 2018 | Feb 18, 2018 |
| 02 | Feb 20, 2018 | Feb 20, 2018 |
| 03 | Feb 21, 2018 | Feb 21, 2018 |

有没有办法在Up()函数中完成此操作?如果我还原/重新实现这些更改,我宁愿不必编写另一个我必须记住运行的脚本。

1 个答案:

答案 0 :(得分:1)

修改Up()方法以包含一个SQL语句,该语句设置现有行中的列值。

在AddColumn命令之后,添加:

Sql("UPDATE dbo.MyTable SET DateSortBy = DateCreated");

总之,这看起来像:

public override void Up()
{
    AddColumn("dbo.MyTable", "DateSortBy", c => c.DateTimeOffset(nullable: false, precision: 7));
    Sql("UPDATE dbo.MyTable SET DateSortBy = DateCreated");
}