2011-05-22 48 views
4

我有一个WPF DataGrid绑定到一些实体(Entity Framework 4+)。在实体管理器中自动生成的时间戳

用户然后编辑DataGrid并按下SAVE。然后使用SaveChanges()将数据保存回MS SQL Server 2008。那么......现在,我想要有AUTOMATIC时间戳存储最后一次更改的时间并自动更新。

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

谢谢你,詹姆斯

回答

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); 
} 
+0

谢谢,看上去不错。 – Cartesius00 2011-05-22 11:30:44