2010-10-24 5 views
2

Je travaille sur un projet utilisant NHibernate. Mon problème est quand je suis en train d'ajouter un objet qui contient une liste d'objets que je reçois l'exception suivante:NHibernate Exception

tentative illégale d'associer une collection avec deux sessions ouvertes de méthode Session.Save

Je ne sais pas quel est le problème ou comment le résoudre, s'il vous plaît si quelqu'un peut aider, je vais apprécier.

+0

Pour clarifier, recevez-vous cette exception lorsque vous essayez d'enregistrer un objet qui possède une propriété 'IEnumerable' qui est également créée via NHibernate? De plus, il serait utile de voir vos classes et votre code de session. – ahsteele

Répondre

5

Vous rencontrez des problèmes de gestion de session. Il semble que vous utilisiez un objet d'une session en tant qu'élément de collection dans une collection d'une autre session. L'utilisation de plusieurs sessions parallèles n'est généralement pas une bonne pratique (du moins pas du même thread).

Lisez ici l'unité de travail; http://www.nhforge.org/wikis/patternsandpractices/nhibernate-and-the-unit-of-work-pattern.aspx.

Il existe une implémentation excellente et libre de ceci dans Rhino.Commons, vous pouvez en lire plus à ce sujet ici: http://ayende.com/blog/archive/2007/06/08/rhino-commons-repositorylttgt-and-unit-of-work.aspx.

0

Il semble que les objets que vous essayez d'ajouter ont été chargés à partir de différentes sessions que l'objet de destination dans lequel vous les attachez.

Questions connexes