我有一个非常简单的Entity Framework 5 DbMigration,它将一个新的布尔列添加到一个包含数千条记录的现有表中。我希望根据同一个表中另外两列中的值来设置每个现有行的该列的初始值。这应该只影响现有记录,因此只应在执行迁移时运行,并且永远不会再次运行。
这基本上是需要执行的逻辑:
var users = (from u in context.Users select u).ToList();
users.ForEach(u =>
{
u.MyNewBoolColumn = (u.Column1 != null && u.Column2 == "some-value");
context.Users.AddOrUpdate(u);
});
我可以想到两种选择,但我不喜欢其中任何一种:
还有其他更好的选择吗?
答案 0 :(得分:2)
迁移表示schema
中的更改,因此您无法在迁移中使用AddOrUpdate()内容。但你可以,这就是我建议你使用Sql()
方法运行纯SQL代码。