Trouver les différences entre deux entités de même type

Je suis en train de travailler sur un mvc3 web app. Lorsque l'utilisateur met à jour quelque chose, je veux comparer les anciennes données vers le nouveau, l'utilisateur est de l'entrée et pour chaque champ est différent de les ajouter à un journal pour créer un journal d'activité.

Droit maintenant, c'est ce que mon action save ressemble:

[HttpPost]
public RedirectToRouteResult SaveSingleEdit(CompLang newcomplang)
{
    var oldCompLang = _db.CompLangs.First(x => x.Id == newcomplang.Id);

    _db.CompLangs.Attach(oldCompLang);
    newcomplang.LastUpdate = DateTime.Today;
    _db.CompLangs.ApplyCurrentValues(newcomplang);
    _db.SaveChanges();

    var comp = _db.CompLangs.First(x => x.Id == newcomplang.Id);

    return RedirectToAction("ViewSingleEdit", comp);
}

J'ai trouvé que je pouvais l'utiliser pour itérer sur ma propriété de oldCompLang:

var oldpropertyInfos = oldCompLang.GetType().GetProperties();

Mais ce n'est pas vraiment utile, car il ne me montre les propriétés (Id, Nom, Statut...) et non pas les valeurs de ces propriétés (1, Bonjour, Prêts...).

Je pouvais juste aller à la dure:

if (oldCompLang.Status != newcomplang.Status)
{
    //Add to my activity log table something for this scenario
}

Mais je ne veux vraiment pas être fait pour que toutes les propriétés de l'objet.

Je ne sais pas quel est le meilleur moyen de parcourir à la fois des objets à trouver des décalages (par exemple l'utilisateur a changé le nom, ou l'état...) et de construire une liste de ces différences que je peux stocker dans une autre table.

InformationsquelleAutor LanFeusT | 2011-04-27