代码之家  ›  专栏  ›  技术社区  ›  J4N

实体框架:监视保存在我的对象上的更改

  •  1
  • J4N  · 技术社区  · 14 年前

    大致来说,将更改放在具有这种结构的表中: IDEvent、EventDate、TableName、RowID、FieldName、OldValue、NewValue

    如果有多个更改,将插入几行。

    它已经适用于我90%的案例,我正在监听ObjectContext的SavingChanges事件

    1 回复  |  直到 13 年前
        1
  •  2
  •   Ladislav Mrnka    14 年前

    在SavingChanges事件中您将无法执行此操作。我认为您可以为ObjectContext创建自己的包装器,并在SaveChanges的包装器方法中实现自己的逻辑。逻辑应该是这样的

    public class MyContextWrapper : IDisposable
    {
      private ObjectContext _context;
    
      public void SaveChanges()
      {
        // Detect changes but do not accept them
        _context.SaveChanges(SaveOptions.DetectChangesBeforeSave); // SaveChanges(false) in .NET 3.5 SP1
    
        // TODO audit trail
    
        // Audit is completed so accept changes
        _context.AcceptAllChanges();
      }
    
    }