J'utilise NHibernate (v 2.1.0.4000) et j'essaie d'utiliser un écouteur d'événement pour une action de mise à jour.Les écouteurs Nhibernate ne fonctionnent pas correctement
J'ai utilisé le code suivant pour ajouter un écouteur à la configuration Nhibernate.
var configuration = new Configuration();
configuration.SetListener(ListenerType.Update, new UpdateListener());
_sessionFactory = configuration.BuildSessionFactory();
Quand je mets à jour deux articles, le premier élément n'obtient pas à la fonction « PerformUpdate » de l'auditeur. Cependant, lors de la mise à jour du second élément, la fonction est appelée.
Comment cela est-il possible?
--- --- Edité
Lors du débogage j'ai découvert que sur le "OnSaveOrUpdate" du Listener, le code suivant est en cours d'exécution:
object obj4 = session.PersistenceContext.UnproxyAndReassociate(@event.Entity);
@event.Entity = obj4;
@event.Entry = session.PersistenceContext.GetEntry(obj4);
Je m'y attendais @event. L'entrée était null, mais elle n'était pas nulle et avait un statut Loaded. Que devrait-il vraiment se passer lors de l'appel de la méthode GetEntry?
La seule fonction que j'ai dans le Listener est la suivante: protected override vide PerformUpdate (SaveOrUpdateEvent @event, entité objet, IEntityPersister persister) { Ce funtion est pas appelé. Je suis sûr que les deux objets sont changés. – Jan
J'ai découvert que lorsque j'obtiens un objet, que je fais une modification et que je mets à jour l'objet, la fonction performUpdate de l'écouteur n'est jamais appelée. – Jan