Ich habe einen Anruf, der feststellen muss, ob ein Feld geändert wurde. Der Aufruf von get mit dieser Entitäts-ID gibt jedoch dieselbe Entität zurück, nicht die vorherige Version.Ermitteln, ob ein Entitätenfeld in NHibernate geändert wurde
Entity e = Dao.Get(id);
//At this point e.Field is X
e.Field = y;
Dao.Save(e);
Entity Dao.Get(Guid id)
{
return Session.Get(id);
}
Entity Dao.Save(Entity e)
{
Entity olde = Session.Get(e.Id);
if (e.Field != olde.Field) <--- e.Field == olde.Field so it does not run.
DoBigMethod(e);
return e;
}
Wie gehe ich mit dieser Situation ohne Hinzufügen einer OnChange-Methode zur Entity-Klasse.
Wir haben eine Flagge auf einem Benutzer, dass, wenn es ändert, läuft eine große Reihe von Code. Dieser Code löst in bestimmten Fällen Ausnahmen aus. Ich muss diese Überprüfung nicht durchführen, wenn sie nur andere Felder aktualisieren. Ausnahmen wären in diesen Fällen unwahrscheinlich. – Thad
Ich habe meiner Antwort einige Ideen hinzugefügt. Ich hoffe es hilft. –