2010-02-04 5 views
4

J'essaie d'effacer une collection dans une relation parent/enfant en effaçant la collection (list.clear()) ou en créant une nouvelle instance de la collection sur le parent.NHibernate one shot delete

similaires à ceci: http://markmail.org/message/mnvooa7g57dlbxta#query:+page:1+mid:mnvooa7g57dlbxta+state:results

Mon test est à peu près identique à celui dans le lien ci-dessus. J'ai essayé plusieurs combinaisons de paramètres, mais pour la vie de moi, je ne peux pas obtenir NHibernate pour émettre une seule suppression SQL pour tous les enfants, par opposition à une suppression SQL pour chaque objet enfant. J'ai dû louper quelque chose.

+0

Pouvez-vous poster votre code? – David

+0

Je peux poster le code plus tard ce soir. J'ai fait un exemple en suivant le même test d'Oren mais j'ai utilisé Fluent pour faire les mappings, à partir de là j'ai essayé plusieurs variantes. –

Répondre

2

Message intéressant. Avez-vous suivi ayendes problem au sein de NHibernate Jira ?. J'ai essayé et Sergey Koshcheyev l'a marqué comme 'pas un problème' à cause de la correspondance inverse = vrai qui semble interdire en quelque sorte une suppression de travail, ce qui signifie pour moi que le mapping inverse interdit à l'orphelin de fonctionner correctement. semble être trop autonome par cela. (pas sûr que ce soit l'adjectif correct)

Essayez le mappage unidirectionnel (si possible) du parent au lieu de rendre les enfants plus dépendants et (espérons-le) travail de suppression one-shot.

+0

Intéressant, je n'y ai jamais pensé, peut-être qu'un seul coup ne supprime que le travail avec une association unidirectionnelle de un à plusieurs. Je vais essayer et voir. –

+0

J'ai essayé une association unidirectionnelle et j'obtiens les mêmes résultats. Peut-être qu'il a été supprimé en 2.12. Ce n'est pas un gros problème, j'essayais juste de le faire fonctionner. –

0

La suppression d'un seul coup pourrait avoir des effets secondaires inattendus, donc je pense que NHibernate la joue en toute sécurité et ne supprime que les enfants qui ont été effacés de cette collection. Bien sûr, vous pouvez toujours utiliser hql pour écrire votre propre suppression.

+0

Vraiment, je pourrais écrire hql, j'étais plus curieux de savoir pourquoi je ne pouvais pas le faire fonctionner et si peut-être la fonctionnalité a été supprimée. –

Questions connexes