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êtes Linq sur mesure [Débutant]


Sujet :

Linq

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Requêtes Linq sur mesure
    Bonjour à tous,

    D'habitude, rechercher dans les forums me suffit mais aujourd'hui j'ai vraiment rien trouvé.

    Je suis actuellement en DUT info(2ème année) et on nous initie au C# avec l'entity Framework

    Nous devons faire une gestion d'une cave à vin avec un moteur de recherche
    suivant plusieurs critère(ex : Pays, région, appellation, château, etc..)

    Ainsi j'ai besoin que ma requête puisse varier en fonction des informations entrées par l'utilisateur. Et c'est là que ce complique les choses :

    Je n'arrive pas à trouver un moyen pour que ma requête puisse évoluer en fonction de la définition de certaines de mes variables membres.

    Fini le blabla, voici le code de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                    var linq = from pays in caveContext.T_PAYS_PAY.Where(queryPays)
                              from region in caveContext.T_REGION_REG.Where(queryRegion)
                              from appelation in caveContext.T_APPELLATION_APT.Where(queryAppelation)
                              from chateau in caveContext.T_CHATEAU_CHT.Where(queryChateau)
                              from bouteille in caveContext.T_BOUTEILLE_BTL.Where(queryBouteille)
                              select bouteille;
     
                    return ((ObjectQuery)linq).Execute(MergeOption.AppendOnly);
    Objectif : si l'utilisateur n'a pas choisit de Pays par exemple alors le where consistera à faire :
    where pays.PAY_C_CODE == pays.PAY_C_CODE //en gros j'annule le where
    mais si il a choisi un pays alors :
    where pays.PAY_C_CODE == this.codePays

    je pense qu'il y a surement un moyens plus propre de le faire mais j'arrive même pas avec cette méthode trash, c'est comme si on ne pouvait plus faire de concaténation de string pour faire notre requête sur mesure.

    J'espère que vous serez en mesure de m'aider car actuellement je suis un peu dégoûté qu'on ne puisse pas faire de requête sur mesure.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Pour faire ces genres de choses (des requêtes dynamiques) il existe ce qu'on appelle le E-SQL (regarde ici) qui est l'une des possibilités offertes par Entity Framework pour requêter une base de données.
    Dernière modification par Domi2 ; 08/03/2013 à 07h26. Motif: Lien non pérenne

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci bien pour ce lien, je vais allez voir un peu ce que çà donne, en attendant j'ai réussit à contourner ce problèmes en parcellisant ma requête en plusieurs étapes.

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

Discussions similaires

  1. Lenteur sur requête LINQ
    Par sisi37 dans le forum Linq
    Réponses: 1
    Dernier message: 27/10/2010, 10h26
  2. requête linq sur base se données MySql
    Par fripon76 dans le forum Linq
    Réponses: 1
    Dernier message: 02/09/2010, 09h43
  3. Réponses: 1
    Dernier message: 04/02/2010, 20h57
  4. Réponses: 5
    Dernier message: 04/05/2009, 14h56
  5. 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

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