我有一个现有的表/模型,我想在其中添加新的布尔值列。该表已经有数百行数据,我无法触摸现有数据。但是..此列将不可为空,因此我需要为true
当前存在的所有行提供默认值。
public class Revision
{
...
public Boolean IsReleased { get; set; }
....
}
重要:
(这是在OP中,但人们似乎想念的是。)
当通过迁移更新数据库时,接收此新列的所有现有行必须将其值设置为True。
另一个选择是创建默认构造函数,并使用所需的默认值设置属性:
public class Revision
{
public Boolean IsReleased { get; set; }
public Revision()
{
IsReleased=true;
}
}
要true
在运行Update-Database
命令时将值设置为现有行的值,可以在您的Configuration
类中执行以下操作:
protected override void Seed(YourContext context)
{
var entities=context.Revisions.Where(r=>!r.IsReleased)
foreach(var e in entities)
{
e.IsReleased=true;
//context.Entry(e).State = EntityState.Modified; If you have disabled change tracking then add this line
}
context.SaveChanges();
}
如果这是您要通过迁移添加的新列,则也可以执行以下操作:
AddColumn("dbo.Revisions", "IsReleased", c => c.Boolean(nullable: false, defaultValue: true));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句