我有一个绑定到某些实体的WPF DataGrid(实体框架4 +)。
然后用户编辑DataGrid并按SAVE。然后使用SaveChanges()
将数据保存回MS SQL Server 2008。嗯...现在,我希望有一个AUTOMATIC时间戳,它存储上次更改的时间并自动更新。
伙计们,有可能吗?怎么样?
谢谢James,
答案 0 :(得分:6)
实现这一目标的最简单方法是在数据库级别:
DateTime
值。 StoreGeneratedPattern
设置为Computed
,以便在每次插入或更新后,数据库中生成的值会正确更新到您附加的实体。如果你不喜欢触发器,你必须手动覆盖SaveChanges,你会找到所有将要插入或更新的实体并设置列:
public override int SaveChanges(SaveOptions options)
{
var entities = ObjectStateManger.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
.Select(e => e.Entity)
.OfType<YourEntityType>();
DateTime now = DateTime.Now;
foreach(var entity in entities)
{
entity.Updated = now;
}
return base.SaveChanges(options);
}