ObjectContext的SavingChanges:找出哪些列已更改?

时间:2012-08-09 14:30:57

标签: entity-framework-4 save objectcontext auditing timestamping

我正在将ObjectContext的SavingChanges事件处理为时间戳条目。要求是,如果只有ColumnA发生了变化,我不会在条目发生变化时为其加上时间戳。

有没有办法可以在此事件中找出哪些列已更改(正在更改)?

1 个答案:

答案 0 :(得分:3)

这应该对你有用,这将遍历任何添加/修改的条目,如果有超过1个已修改的属性,并且它不是“ColumnA”,则可以修改时间戳:

public int SaveChanges()
{
     foreach( ObjectStateEntry entry in ObjectStateManager.GetObjectStateEntries( EntityState.Added | EntityState.Modified ) )
     {
         var properties = entry.GetModifiedProperties();

          if (!(properties.Count() == 1 && properties.First() == "ColumnA"))
          {
              //modify timestamp here
          }
     }

    return base.SaveChanges();
}