2009-09-02 6 views
2

Je suis assez nouveau à la fois NHibernate et CSLA.NET, et je suis confronté à un problème où je dois essentiellement enregistrer la même ligne dans la base de données deux fois , dans la même transaction (et donc, session). J'ai lu les autres questions sur SO w.r.t. NonUniqueObjectException, ainsi que fait beaucoup de googling, mais je ne peux pas sembler faire quelque chose de travail.NHibernate.NonUniqueObjectException dans une transaction (en utilisant CSLA.Net)

Quoi qu'il en soit, je crée une session, commence une transaction, et fais myObject = myObject.Save(). À ma connaissance, CSLA crée une nouvelle instance de myObject après qu'elle a été enregistrée et la renvoie, qui est évidemment affectée à myObject.

Plus tard (dans la même transaction), je dois à nouveau effectuer myObject.Save(). C'est où l'exception NonUniqueObjectException se produit. J'ai essayé de verrouiller et de fusionner myObject avec la session NHibernate, mais cela ne semble pas fonctionner.

Y a-t-il autre chose que je devrais essayer? Existe-t-il un moyen facile de faire des transactions «imbriquées» avec NHibernate (même si je ne suis pas sûr que cela résoudrait le problème).

J'apprécierais toutes les suggestions.

Répondre

1

pourquoi ne pas utiliser saveOrUpdate

+0

Désolé, je suppose que je devrais avoir indiqué la méthode Save() est utilisée parce que myObject est un AAPC BusinessBase objet dérivée de. SaveOrUpdate est finalement appelé directement au moment de la persistance. – Jordan0Day

Questions connexes