实体管理器中自动生成的时间戳

我有一个绑定到某些实体的WPF DataGrid(entity framework4+)。

然后,用户编辑DataGrid并按SAVE。 然后使用SaveChanges()将数据保存回MS SQL Server 2008。 嗯…现在,我想拥有AUTOMATIC时间戳,它存储上次更改的时间并自动更新。

伙计们,这可能吗? 怎么样?

谢谢詹姆斯

实现此目的的最简单的解决方案是在数据库级别:

  • 在表中创建一个新列以存储DateTime值。
  • 创建数据库触发器以为每个插入或更新表设置列。
  • 将新列映射为实体中的属性
  • 将新属性的StoreGeneratedPattern设置为Computed以便在每次插入或更新后,将数据库中生成的值正确更新到附加实体。

如果您不喜欢触发器,则必须在覆盖SaveChanges时手动执行此操作,您可以在其中找到将插入或更新的所有实体并设置列:

 public override int SaveChanges(SaveOptions options) { var entities = ObjectStateManger.GetObjectStateEntries(EntityState.Added | EntityState.Modified) .Select(e => e.Entity) .OfType(); DateTime now = DateTime.Now; foreach(var entity in entities) { entity.Updated = now; } return base.SaveChanges(options); }