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

ASP.NET MVC Discussion :

Organiser son code pour une jointure entre 2 tables [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 35
    Points
    35
    Par défaut Organiser son code pour une jointure entre 2 tables
    Bonjour à vous,

    Je me pose une question assez fondamentale et surement simple pour vous.
    Je vous explique le contexte, j'ai une application MVC 3 qui consomme un service WCF qui lui même appel un contexte de données via Ado.net entity framework.

    J'ai une table restaurant(ID,nom, adresse, responsable_ID) et une table employe(ID, nom, prénom). Je voudrais récupérer dans ma vue le résultat suivant: Nom, adresse du restaurant et nom de l'employé responsable.

    Comment je dois m'y prendre ? J'ai une solution en tête qui ne me semble pas optimisée et qui consiste à itérer ma Liste<restaurant> pour y récupérer le nom de l'employé mais je trouve ça lourd de faire une requêtes en plus à chaque fois, surtout si la liste de restaurant est longue ...

    Je vous remercie par avance de prendre le temps de m'expliquer,
    Bon Weekend à ceux qui on la chance de faire le pont.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par scude Voir le message
    Comment je dois m'y prendre ? J'ai une solution en tête qui ne me semble pas optimisée et qui consiste à itérer ma Liste<restaurant> pour y récupérer le nom de l'employé mais je trouve ça lourd de faire une requêtes en plus à chaque fois, surtout si la liste de restaurant est longue ...
    Dans ta requête EF qui récupère la liste des restaurants, pourquoi ne pas inclure directement le responsable dans le chargement ? C'est à dire faire un Include("Responsable") (Je suppose que Responsable est le nom de la propriété de navigation). Comme ça tu n'auras pas à itérer sur la liste des restaurants et pour chaque item faire une requête de récupération du Responsable.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Merci pour ta réponse !

    J'avance pas à pas. Je ne maitrise pas encore bien ce concept.

    Voila une méthode de mon WCF qui récupère la liste des restaurants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public List<restaurant> getListRestaurant()
            {
                using (RestoEntities contexte = new RestoEntities())
                {
                    return (from _restaurant in
                                contexte.restaurant
                            orderby _restaurant.nom
                            select _restaurant).ToList();
                }
            }
    Si je comprend bien j'ai juste à rajouter .Include("MaPropriétéDeNavigation") après "from _restaurant in contexte.restaurant"

    Mais comment je récupère les valeurs du coup ? je dois créer une classe "RestaurantResponsable" qui correspond au type de retour ?

    Enfin j'ai parcouru quelques articles et j'ai vu que souvent avec un include le lazyloading devait être à True, or j'ai du le désactiver à cause de WCF.


    Encore merci pour ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu feras comme suivant :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public List<restaurant> getListRestaurant()
            {
                using (RestoEntities contexte = new RestoEntities())
                {
                    return (from _restaurant in
                                contexte.restaurant.Include("RestaurantResponsable")
                            orderby _restaurant.nom
                            select _restaurant).ToList();
                }
            }
    Citation Envoyé par scude Voir le message
    Mais comment je récupère les valeurs du coup ? je dois créer une classe "RestaurantResponsable" qui correspond au type de retour ?
    Ton type de retour ne change pas. ça restera toujours une liste générique de type Restaurant. Pour accéder à la propriété de navigation alors tu feras restaurant.RestaurantResponsable où restaurant est une instance de type Restaurant se trouvant dans ta liste.

    Citation Envoyé par scude Voir le message
    Enfin j'ai parcouru quelques articles et j'ai vu que souvent avec un include le lazyloading devait être à True, or j'ai du le désactiver à cause de WCF.
    T'inquiètes pas. C'est normal.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Ah ça marche superbement bien

    En faite c'est ultra simple à utiliser il me manque juste quelques bases de pratique.

    Encore merci pour ta patience

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 20/05/2015, 13h36
  2. Réponses: 5
    Dernier message: 16/02/2011, 16h04
  3. Récupérer le code d'une relation entre des tables
    Par ClaudeLELOUP dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/05/2008, 17h51
  4. [MySQL] Faire une jointure entre deux tables qui ne sont pas dans la même base de données
    Par sandddy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 03/04/2008, 14h18
  5. Optimisation d'une jointure entre 3 tables
    Par gavelin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/12/2005, 09h52

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