Entity Framework 4.1 DbContext Remplacer SaveChanges à la Vérification de la Propriété de Changer

Je suis en train de mettre en œuvre une contrainte 'journal d'audit" de la propriété des changements de propriétés dans un ensemble de classes. J'ai réussi à trouvé comment mettre CreatedOn|ModifiedOn type de propriétés, mais je suis à défaut de trouver comment "trouver" la propriété qui a été modifié.

Exemple:

public class TestContext : DbContext
{
    public override int SaveChanges()
    {
        var utcNowAuditDate = DateTime.UtcNow;
        var changeSet = ChangeTracker.Entries<IAuditable>();
        if (changeSet != null)
            foreach (DbEntityEntry<IAuditable> 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();
    }
}

Alors, est-il un moyen d'accéder à la propriété qui a changé avec ce niveau de détail, en EF 4.1 DbContext?

InformationsquelleAutor James Pogran | 2011-05-27