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

Linq Discussion :

[Linq To Entities]Suppression multiple


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Par défaut [Linq To Entities]Suppression multiple
    Je cherche à faire un suppression sur un ensemble d'éléments comme on pourrais le faire avec un requête conditionné en SQL mais sans faire un delete sur chaque element.

    Je sais qu'avec Linq To SQL il y avait DeletAllObject mais je ne le trouve pas (j'utilise Entity Framework).

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    A tenter : un clear sur ta liste d'entities suivi d'un SaveChanges.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Par défaut
    Ça ne marche pas, apparemment ça supprime la liaison entre les deux entités mais ne supprime pas l'entité qui subis le clear() de la base de données.

    Edit:
    En fait si, j'avais oublié que les entités associés ne sont pas chargé d'office je fais donc un :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    monEntite.entitesAssociesASupprimer.Load();
    // Traitement associé ...  
    monEntite.entitesAssociesASupprimer.Clear();
    monContext.SaveChanges();

    Je n'est plus qu'a change l'ensemble de mon algo d'appel .
    Par contre je ne met pas en [RÉSOLU] car ça ne correspond pas vraiment à ce que je cherche, il me faudrait une fonction similaire mais applicaple à un résultat de requête en Linq pour faire le conditionnement et non passé pas les liaisons de l'entité.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Si tu veux supprimer sans charger les entitiés sous-jacentes, je ne vois que des clauses DELETE ON CASCADE côté sgbd...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 42
    Par défaut
    c'est la qu'est l'ENORME "problème"
    vu que je fais tout par code avec EF et pour l'instant sur des BD de type SQL Serveur (j'ai bien dis pour l'instant) je sais pas ou c'est ça

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Ton souci est ne pas savoir définir un On Cascade sur une table SQL Server ?

    http://msdn.microsoft.com/fr-fr/libr...3(SQL.90).aspx
    Tu peux préciser le Cascade sur une colonne ou une table

    Si tu as besoin de plus de renseignements, le forum SQL Server est là : http://www.developpez.net/forums/f49...ms-sql-server/

  7. #7
    zar
    zar est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 3
    Par défaut
    Citation Envoyé par Idredeguerre Voir le message
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    monEntite.entitesAssociesASupprimer.Load();
    // Traitement associé ...  
    monEntite.entitesAssociesASupprimer.Clear();
    monContext.SaveChanges();
    dans le même scénario où je souhaite supprimer un ensemble d'entités liées, si j'applique cette méthode du Load puis du Clear, j'obtiens ceci au SaveChanges :
    Une relation est ajoutée ou supprimée à partir d'un AssociationSet « XXX_FK1 ». En raison des contraintes de cardinalité, un «XXX » correspondant doit également être ajouté ou supprimé.
    Je suis bien d'accord avec le message mais comment supprimer les entités associées ? J'ai même tenté un parcours avec des DeleteObject et des Remove sur la liste... sans succès Une idée ?

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    La méthode la plus couramment utilisée est de créer une procédure stockée côté SQL pour s'occuper de la suppression de plusieurs entités. Cette procédure peut être mappée côté EF sous forme de méthode.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

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

Discussions similaires

  1. Orcas - Linq to Entities
    Par elnfrancois dans le forum Accès aux données
    Réponses: 2
    Dernier message: 31/08/2007, 10h21
  2. suppression multiple dans un treeview
    Par tomkiki dans le forum Delphi
    Réponses: 6
    Dernier message: 09/05/2007, 15h30
  3. suppression multiple, clé primaire multiple
    Par javaweb44 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/12/2006, 17h51
  4. Suppression multiple à partir Zone de Liste
    Par Daniel MOREAU dans le forum Access
    Réponses: 4
    Dernier message: 28/08/2006, 09h04
  5. [forms 9i] case à cocher : suppression multiple
    Par ramaro dans le forum Forms
    Réponses: 3
    Dernier message: 05/04/2006, 09h33

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