2010-10-27 6 views
1

J'ai des problèmes avec NHibernate mise à jour de certaines de mes entités lorsque cela n'est pas supposé se produire (vérification sale). Comme j'utilise NHibernate.Mapping.Attributes pour mapper mes classes, j'ai trouvé qu'il y a un paramètre "Check" à l'élément "Class" de NHMA. Je voudrais savoir si je peux désactiver la vérification sale en mettant ce paramètre à false ou quelque chose (le type requis pour ce paramètre est la chaîne, donc ce n'est peut-être pas cela).NHibernate Mapping Attributes + Dirty Checking

Toute aide serait appréciée!

Répondre

5

Tout d'abord, ce n'est pas quelque chose que vous devriez faire. NHibernate fait de son mieux pour faire des trucs comme la vérification incorrecte. Si NHibernate pense que c'est sale, c'est probablement le cas. Essayez de découvrir les changements que vous avez apportés à l'entité qui font que NHibernate pense que c'est sale et voyez si vous pouvez résoudre votre problème en l'ajustant.

Cela dit, il existe une solution. NHibernate utilise des écouteurs qui se déclenchent avant l'insertion et la mise à jour. Plus d'informations à ce sujet peuvent être trouvées au http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx, http://www.codinginstinct.com/2008/04/nhibernate-20-events-and-listeners.html et many other locations.

Les écouteurs d'événement eux-mêmes ont une valeur de retour. La valeur de retour indique à NHibernate s'il faut exécuter les requêtes SQL d'insertion/mise à jour. Lorsque vous renvoyez false, il les exécute. Lorsque vous renvoyez true, ce n'est pas le cas. De cette façon, vous pouvez supprimer la persistance réelle de la base de données. L'avantage de cette approche est que, dans le cas où NHibernate est concerné, elle croit que les entités ont été réellement persistées, donc l'état interne de NHibernate reste correct et les entités deviennent non-sales.

+0

Ok, je vais vérifier – Hal