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 :

Requête LINQ


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut Requête LINQ
    Bonjour,

    Imaginons 2 tables : Pays et Ville

    J'ai une procédure stockée getAllPays() qui me renvoie tous les enregistrements de la table pays et de la table ville :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select P.Pay_Id, P.Pay_Name, V.Vil_Id, V.Vil_Name
    From Pays Left Outer Join Ville
    On P.Pay_Id = V.Vil_Id
    J'ai une classe pays qui contient une collection de villes et une classe ville

    J'aimerais créer une requête LINQ pour créer tout mes pays et leurs villes en parcourant la SP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var pays = from p in db.getAllPays()
                    select new Pays
                   {
                         Id = p.Pay_Id
                         ...
                         Villes = ??? de quelle manière je parcours toutes les villes de ce pays pour créer ma collection de villes?
                   }
    Merci d'avance,

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Xxbz3 Voir le message
    Select P.Pay_Id, P.Pay_Name, V.Vil_Id, V.Vil_Name
    From Pays Left Outer Join Ville
    On P.Pay_Id = V.Vil_Id
    Déjà cette requête ne peut pas marcher (manque les alias) et, par ailleurs, si Vil_id représente l'Id de la ville dans la table Ville, elle n'a aucun sens sur le plan métier.
    Si au contraire Vil_Id représente la clef externe sur la table Pays dans la table Ville, le nommage est pour le moins mal choisi.

    Donc merci de préciser le problème un peu mieux, afin de nous éviter de jouer aux devinettes.

    Eventuellement poster le DDL des tables Pays et Ville, ainsi on y verra plus clair.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Oups effectivement la requête est incorrecte, j'ai tapé ca rapidement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select P.P ay_Id, P.Pay_Name, V.Vil_Id, V.Vil_Name
    From Pays P Left Outer Join Ville V
    On P.Pay_Id = V.Vil_Pay_Id
    Donc en bref je ramène toutes les données et j'aimerais récréer mes objets via une requête LINQ en ne faisant appel qu'à cette SP

    Merci,

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est du Linq to SQL ou Entity Framework ?

    Normalement tu définis dans le modèle une association entre Pays et Ville, et donc tu n'as pas besoin de gérer manuellement le remplissage de la propriété Villes.

    D'autre, part, il n'est pas possible dans une requête Linq de créer explicitement une instance de l'entité en appelant le constructeur (car ce n'est pas traduisible en SQL)

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Je n'ai pas de modèle à proprement parlé

    Le modèle dont je dispose est la classe crée par LINQ qui est liée à la procédure stockée (qui récupère toutes les données des tables Pays et Ville)

    donc dans mon example, j'aurais une classe sp_GetAllPaysResult crée par LINQ qui contiendrait tous les enregistrement des tables Pays et Ville un peu comme ça :

    Pay_Id Pay_Name Vil_Id Vil_Name
    1 France 1 Paris
    1 France 2 Lyon
    2 U.S.A 1 New York
    3 Italie 1 Milan
    3 Italie 2 Rome


    A partir de la j'aimerais récrée mes objets Pays et les objets villes (une collection dans l'objet Pays) qui leur appartiennent

    Je ne sais pas si ca vous parait assez clair

    Merci pour l'aide

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En fait je vois pas trop l'intérêt de la procédure stockée dans ce cas...

    Si tu modélises simplement les tables Pays et Ville avec Linq, il suffira de faire "db.Pays" pour récupérer la liste des pays avec les villes associées...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach(Pays p in db.Pays)
    {
        foreach (Ville v in p.Villes)
        {
            ...
        }
    }

Discussions similaires

  1. Requête linq jointure
    Par oyigit dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2010, 16h02
  2. Réponses: 0
    Dernier message: 29/04/2009, 16h35
  3. Réponses: 7
    Dernier message: 06/04/2009, 16h29
  4. Colle sur un tri dans une requête linq to sql
    Par boby62423 dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2009, 10h01
  5. Réponses: 7
    Dernier message: 10/02/2008, 11h56

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