【发布时间】:2011-05-22 09:30:43
【问题描述】:
我有一个绑定到某些实体的 WPF DataGrid(实体框架 4+)。
然后用户编辑 DataGrid 并按 SAVE。然后使用SaveChanges() 将数据保存回MS SQL Server 2008。嗯...现在,我想要 AUTOMATIC 时间戳,它存储最后一次更改的时间并自动更新。
各位,有可能吗?怎么样?
谢谢你,詹姆斯
【问题讨论】:
标签: c# .net wpf entity-framework
我有一个绑定到某些实体的 WPF DataGrid(实体框架 4+)。
然后用户编辑 DataGrid 并按 SAVE。然后使用SaveChanges() 将数据保存回MS SQL Server 2008。嗯...现在,我想要 AUTOMATIC 时间戳,它存储最后一次更改的时间并自动更新。
各位,有可能吗?怎么样?
谢谢你,詹姆斯
【问题讨论】:
标签: c# .net wpf entity-framework
最简单的解决方案是在数据库级别:
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);
}
【讨论】: