如何在Code First模型中的布尔值上设置默认值?

凯西·克鲁克斯顿(Casey Crookston):

我有一个现有的表/模型,我想在其中添加新的布尔值列。该表已经有数百行数据,我无法触摸现有数据。但是..此列将不可为空,因此我需要为true当前存在的所有行提供默认值

public class Revision
{
    ...
    public Boolean IsReleased { get; set; }
    ....
}

重要:

(这是在OP中,但人们似乎想念的是。)

当通过迁移更新数据库时,接收此新列的所有现有行必须将其值设置为True。

octavioccl:

另一个选择是创建默认构造函数,并使用所需的默认值设置属性:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章