2

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

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()');

那可能吗 ?有什么想法吗?

4

2 回答 2

0

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

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

protected override void Seed(DbContext context)
{
    context.Database.ExecuteSqlCommand(
        "ALTER TABLE [T70_AccountService] ADD DEFAULT (getutcdate()) FOR [Created]");
}
于 2012-11-08T21:08:32.170 回答
0

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

AddColumn("[table name]", "[column name]", c => c.Boolean(nullable: false, defaultValue: false));
于 2014-02-11T20:45:39.350 回答