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)您必须使用返回所需值的查询替换伪代码
| 归档时间: |
|
| 查看次数: |
10066 次 |
| 最近记录: |