title: Entity Framework 4.1 DbContext Override SaveChanges to Audit Property Change
body: <p>I am trying to implement a constrained 'audit log' of property changes to a properties in a set of classes. I have successfully found out how to set CreatedOn|ModifiedOn type properties, but am failing to find out how to 'find' the property that has been modified.</p>
  
  <p>Example:</p>
  
  <pre><code>public class TestContext : DbContext
  {
      public override int SaveChanges()
      {
          var utcNowAuditDate = DateTime.UtcNow;
          var changeSet = ChangeTracker.Entries&lt;IAuditable&gt;();
          if (changeSet != null)
              foreach (DbEntityEntry&lt;IAuditable&gt; 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();
      }
  }
  </code></pre>
  
  <p>So, is there a way to access the property that changed with this level of detail in EF 4.1 DbContext?</p>