IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NHibernate Discussion :

[C#][NHibernate] Cascade update/delete


Sujet :

NHibernate

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 332
    Points
    332
    Par défaut [C#][NHibernate] Cascade update/delete
    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 ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 332
    Points
    332
    Par défaut
    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 .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. On update cascade / on delete cascade
    Par bilred dans le forum SQL
    Réponses: 5
    Dernier message: 16/12/2008, 08h47
  2. Réponses: 2
    Dernier message: 01/10/2007, 13h24
  3. requéte insert /update/delete par dataAdapter
    Par magui_laurene dans le forum Accès aux données
    Réponses: 1
    Dernier message: 02/08/2007, 14h12
  4. Réponses: 4
    Dernier message: 05/04/2005, 18h28
  5. Redirect de la page après un insert/update/delete
    Par mchicoix dans le forum XMLRAD
    Réponses: 5
    Dernier message: 25/02/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo