EF6.X中的EntityFramework代码第一个FluentAPI DefaultValue

Ton*_*Bao 31 c# entity-framework ef-code-first ef-fluent-api

如何使用EntityFramework Code First FluentAPI为bool属性设置默认值?

就像是:

Property(l => l.PropertyFlag).HasColumnType("bit").DefaultValue(1);
Run Code Online (Sandbox Code Playgroud)

htx*_*yan 31

好消息,代码现在首先支持这个.在生成的迁移的"Up()"方法中,使用以下语法指定默认值:

AddColumn("[table name]", "[column name]", c => c.Boolean(nullable: false, defaultValue: false));
Run Code Online (Sandbox Code Playgroud)

"AddColumn"方法的MSDN

  • 缺点是,如果您重新迁移迁移,则必须记住重新添加此代码.希望他们很快能在Fluent Api中支持这个功能. (3认同)
  • 这只是一次Up迁移.OP正在询问如何在插入时设置默认值.在幕后,如果C#属性为null,则EF将POCO中的每个属性映射为插入语句为NULL.对于值类型,它会插入值类型的默认值.但有用的信息! (2认同)

Nin*_*Nye 9

我不确定流畅的方式,但你可以简单地在无参数构造函数中设置属性......

public class MyTable
{
    public MyTable()
    {
        CanSetDefault = true;
    }

    public bool CanSetDefault {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

更新

一个快速的谷歌建议不可能使用流畅的api ...
http://social.msdn.microsoft.com/Forums/en-US/ad854e28-02f5-451b-9000-c8bcb1355d0b/codefirst-ctp5-and-default -值?论坛= adonetefx

  • 很好的建议,但不适用于用于CreatedOn字段的DateTime.Now,因为从构造类实例到插入时会有时钟漂移.这将导致一些基于审计日志的难以调试的代码. (2认同)