是否可以扩展FluentApiMapper以设置默认值?

时间:2012-11-08 18:13:19

标签: .net entity-framework c#-4.0 ef-code-first

我正在使用EF 5 Code Fist并使用流畅的API指定一些自定义对象到表映射。像这样的Smth:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
   //Account Service
   modelBuilder.Entity<ACCOUNT>().ToTable("ACCOUNT", "T70_AccountService");
    ...
   modelBuilder.Entity<ACCOUNT>()
     .Property(p => p.Created).HasColumnType("DateTime")
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);

我希望能够做的是添加一个允许添加的扩展

 .HasDefaultValue('(getdateutc()');

这可能吗?有什么想法?

2 个答案:

答案 0 :(得分:0)

简短的回答是:不,没有API(但是?)在代码优先设置默认值。

更长的答案是:不。第二好(但远远落后)是使用数据库初始化程序将DDL查询发送到数据库:

protected override void Seed(DbContext context)
{
    context.Database.ExecuteSqlCommand(
        "ALTER TABLE [T70_AccountService] ADD DEFAULT (getutcdate()) FOR [Created]");
}

答案 1 :(得分:0)

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

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