|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Christian FINELDéveloppeur .NET Inscription : avril 2004 Messages : 265 ![]() |
Bonjour,
J'ai besoin de configurer NHibernate de manière à ce que la suppression de l'élément parent dans une relation OneToMany ne supprime pas la partie enfant, un petit schéma : EntitéParent 1 ---- n EntitéEnfantCollection J'ai déjà exclut cascade="all-delete-orphan" - j'ai tenté cascade="save-update', sans résultat. Quelqu'un a déjà eu ce problème ?
__________________
http://www.macreiben.net |
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 238 ![]() |
En dehors du fait qu'il faut aussi contrôler la maniére dont cette relation est matérialisées dans la base,
Je ne suis pas certain de comprendre l'objectif : Je comprends que si tu a un objet parent qui a une collection d'enfant, si tu supprimes l'enfant, tu ne veux pas supprimer le parent ? Les modes de fonctionnement sont les suivants : none Aucune action effectuée, c'est à "toi" de gérer le nettoyage de l'association manuellement save-update chaque élément de l'association est contrôlé et sauvé ou updaté si nécessaire. delete La suppression du parent entraine la suppression des objets associés. delete-orphan La suppression du parent entraine la suppression des objets associés. Un objet supprimé de la collection qui n'est plus rattaché à un parent sera supprimé (orphelin) all Itére toute l'association et applique les modifications à la collection. all-delete-orphan Comme all, plus supprime les éléments de la collection orphelins Globalement ce que tu souhaites semble être none, ce qui veut cependant dire dans ton cas que tu n'as pas d'intégrité relationnelle dans ta base sur cette relation, puisqu'il peut exister des éléments enfants orphelins. Ou éventuellement all, en fonction de la contrainte qui fera une mise à jour de la collection sans traiter les orphelins (donc les éléments détachés du parent). Mais si tu avais un bout de code et de mapping, je t'aidera mieux probablement.
|
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Christian FINELDéveloppeur .NET Inscription : avril 2004 Messages : 265 ![]() |
Alors en fait c'est exactement l'inverse ^^. Je précise :
ObjetParent 1 -- n ObjetsEnfant n -- 1 AutreObject Je veux supprime l'objet ObjectParent sans supprimer ObjetEnfant car sinon je perds des données. La solution : - Modifier la contrainte Foreign key (SQL Server 2008) avec ON UPDATE SET NULL. On modifiera la colonne contenant la clé étrangère avec un DEFAULT NULL. - Modifier le mapping de la collection enfant dans ObjectParent : on place l'attribut cascade à save-update et inverse à true. Avec cette configuration, lors de la suppression d'une instance d'ObjetParent, les clés étrangères associés sont placées à NULL. Je passe le topic à résolu
__________________
http://www.macreiben.net |
|
00
|
Copyright © 2000-2013 - www.developpez.com