@elkdanger提出的解决方案是可行的,但是如果您使用代码优先方法,则不必创建分部类 – 您可以将初始化直接放置到您的实体.
不要使用数据库方法!它不起作用,因为它会要求标记属性作为数据库生成(插入后正确重新填充).标记属性数据库后,您永远不能在应用程序中更改其值.
最后一个选项是在派生的DbContext中覆盖SaveChanges并手动设置属性.就像是:
public override int SaveChanges()
{
var entities = ChangeTracker.Entries()
.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();
}
如果在创建实体实例和保存实例之间存在显着差异,则此方法可能更好.