设置默认的DateTimeOffset值?

时间:2013-12-08 10:33:38

标签: c# entity-framework entity-framework-5

我有实体框架代码优先的以下模型类。我想在创建数据库表时为CreateTime设置默认值当前时间。但是,无法编译以下代码,因为

  

类型'System.DateTimeOffset'不能声明为const

这是为DateTimeOffset设置默认值的更好方法吗?

public class MyClass
{
    public int Id { get; set; }
    public string Title { get; set; }
    [DefaultValue(now)]
    public DateTimeOffset CreateTime 
    { 
        get { return _createTime; } 
        set { _createTime = value; } 
    }

    private const DateTimeOffset now = DateTimeOffset.Now;
    private DateTimeOffset _createTime = now;
}

1 个答案:

答案 0 :(得分:2)

我认为执行所需操作的最佳方式是覆盖SaveChanges中的DbContext方法。

public class MyDbContext : DbContext
{
    public override int SaveChanges()
    {
        foreach (var entry in this.ChangeTracker.Entries<MyClass>().Where(x => x.State == EntityState.Added))
        {
            entry.Entity.CreateTime = DateTimeOffset.Now;
        }

        return base.SaveChanges();
    }
}