EF 4.1 - 如何在datetime列的插入时添加默认值

and*_*dyJ 4 entity-framework entity-framework-4.1

使用EF 4.1如何向基础表添加默认值?在这种特殊情况下,每次将新记录插入数据库时​​,如何将datetime列设置为等效的getdate,而不必在代码中设置它.

提前致谢

Lad*_*nka 7

@elkdanger提出的解决方案是可行的,但是如果您使用代码优先方法,则不必创建分部类 - 您可以将初始化直接放置到您的实体.

不要使用数据库方法!它不起作用,因为它会要求标记属性作为数据库生成(插入后正确重新填充).标记属性数据库后,您永远不能在应用程序中更改其值.

最后一个选项是覆盖SaveChanges您的派生DbContext并手动设置属性.就像是:

public override int SaveChanges()
{
    var entities = ChangeTracker.Entries<YourEntityType>()
                                .Where(e => e.State == EntityState.Added)
                                .Select(e => e.Entity);
    var currentDate = DateTime.Now;
    foreach(var entity in entities)
    {
        entity.Date = currentDate;
    }

    return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

如果在创建实体实例和保存实例之间存在显着差异,则此方法可能更好.