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

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

就像是:

Property(l => l.PropertyFlag).HasColumnType("bit").DefaultValue(1); 

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

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

MSDN为“AddColumn”方法

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

 public class MyTable { public MyTable() { CanSetDefault = true; } public bool CanSetDefault {get; set; } } 

更新

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

由于EF没有我需要的function,例如默认值和唯一键作为外键,我们必须将ORM从EF更改为NHibernate。 在我看来,NHibernate比EF 6.X具有更多function。

这里的另一个选择是使用您自己的默认SqlServerMigrationSqlGenerator类。 然后,您可以在Generate方法中注入您想要发生的某些事情(例如,默认值)。 与此相关的好处是你也可以在其他应用程序中使用它,因为它非常通用。 这是一个很好的解释。

  internal class CustomSqlServerMigrationSqlGenerator : SqlServerMigrationSqlGenerator { protected override void Generate(AddColumnOperation addColumnOperation) { SetCreatedUtcColumn(addColumnOperation.Column); base.Generate(addColumnOperation); } protected override void Generate(CreateTableOperation createTableOperation) { SetCreatedUtcColumn(createTableOperation.Columns); base.Generate(createTableOperation); } private static void SetCreatedUtcColumn(IEnumerable columns) { foreach (var columnModel in columns) { SetCreatedUtcColumn(columnModel); } } private static void SetCreatedUtcColumn(PropertyModel column) { if (column.Name == "CreatedUtc") { column.DefaultValueSql = "GETUTCDATE()"; } } }