实体框架迁移 - 添加具有现有条目值的新列

use*_*117 12 c# entity-framework ef-code-first ef-migrations

我有一个Entity Framework Code First的应用程序.

在表格中,我必须添加一列.所以我在模型中添加了它并创建了一个Migration.

但是在迁移期间,我想更新现有条目并为此新列添加值.该值必须从数据库中获取(我的"配置"表中的常量字段).

但默认值应仅适用于现有条目,而不适用于下一条目.

我怎么能从我的Migration类中做到这一点?

我目前的迁移类:

public override void Up()
{
    var theDefaultValue = MyConstants.MyConstantParameterFromDatabase;
    AddColumn("MySchema.MyTable", "MyNewColumn", c => c.Decimal(nullable: false, precision: 18, scale: 2));
}
Run Code Online (Sandbox Code Playgroud)

编辑:仍然在寻找更新所有现有条目(具有0值)的解决方案,但仅在此迁移之后...

Jot*_*aBe 17

您只需修改Up()方法,并在其中包含一个SQL语句来设置现有行中的列值.这仅在更新数据库时执行,并且更新涉及此特定迁移.因此,只有在Update-Database调用时才会更新已存在的行.

AddColumn命令之后添加这样的代码,以便在SQL语句运行时该列已在表中可用:

Sql("UPDATE dbo.MyTable SET Column = (SELECT val FROM config)");
Run Code Online (Sandbox Code Playgroud)

注意:(SELECT val FROM config)您必须使用返回所需值的查询替换伪代码

  • @AndyRaddatz 请在更改答案之前(我的意思是不只是更正拼写错误或更改措辞),请重新阅读问题:-必须从数据库中获取该值(我的“配置”表中的常量字段) .-- (2认同)