Entity Framework 4.1 DbContext Override SaveChanges to Audit Property Change

Sto cercando di implementare un “registro di controllo” vincolato delle modifiche alle proprietà in una serie di classi. Ho scoperto con successo come impostare le proprietà del tipo CreatedOn | ModifiedOn, ma non riesco a scoprire come “trovare” la proprietà che è stata modificata.

Esempio:

public class TestContext : DbContext { public override int SaveChanges() { var utcNowAuditDate = DateTime.UtcNow; var changeSet = ChangeTracker.Entries(); if (changeSet != null) foreach (DbEntityEntry dbEntityEntry in changeSet) { switch (dbEntityEntry.State) { case EntityState.Added: dbEntityEntry.Entity.CreatedOn = utcNowAuditDate; dbEntityEntry.Entity.ModifiedOn = utcNowAuditDate; break; case EntityState.Modified: dbEntityEntry.Entity.ModifiedOn = utcNowAuditDate; //some way to access the name and value of property that changed here var changedThing = SomeMethodHere(dbEntityEntry); Log.WriteAudit("Entry: {0} Origianl :{1} New: {2}", changedThing.Name, changedThing.OrigianlValue, changedThing.NewValue) break; } } return base.SaveChanges(); } } 

Quindi, c’è un modo per accedere alla proprietà che è cambiata con questo livello di dettaglio in EF 4.1 DbContext?