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

Entity Framework Discussion :

Clause Where en link to entity


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Par défaut Clause Where en link to entity
    Avec ADO.NET , je mettais en forme mes clauses WHERE et ORDER BY dans une chaine de caracteres avec string builder suivant le La selection de la recherche.
    Exemple :
    string StrSelect = "SELECT * FROM TABLE"
    string StrWhere = " Where a = 1 AND C = 2"
    string StrOderBy = " Order by a"
    et ma requete etait : StrSelect + StrWhere + StrOderBy.

    existe t il un moyen de faire pareil avec Link to Entity ?
    J'ai essaye mais je pense que cela n'est pas possible.
    Merci de Votre Confirmation
    Anthride

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Je ne comprends pas la question...
    Avec Linq to Entity tu n'es pas censé écrire de requête à la main, tu procèdes de façon "dynamique".

    Par exemple :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    var results = from u in context.Users where u.id > 4000 select u.LastName;

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Par défaut
    Mes requetes peuvent faire des centaines de caracteres suivant la selection demandée.

    J'ai un formulaire de recherche d'un ou plusieurs produits.
    J'ai une vingtaine de criteres de selection ( Fournisseur , collection , famille .... etc)
    plus une vingtaine de critere de tri .
    Suivant la saisie du formulaire , j'alimente un string avec des AND ou des Or

    et j'envoie une seule rquete a la fin de mon formulaire.
    Juste pour eviter d'avoir des centaires de
    "var results = from u in context.Users where ..... select ........ ;

    Je peux toujours garder mon ancienne methode. Je ne suis pas blocqué. mais j'aurais aime n'avoir que du Link dans mon Code.

    Anthrid

  4. #4
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    A priori l'un n'empêche pas l'autre...

    Peux-tu fournir un exemple de requête ? (Qui soit quand même compréhensible...)

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    En utilisant la forme plus "method-call-style" de linq, tu peux peut-être retrouver ta logique de construction...

    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var res1 = context.Table.Where(t=>t.val == 2);
    var res2 = res1.OrderBy(r1=>r1.name);
    var res3 = res2.Select(r2=>string.Format("{0} {1}",r2.Name + r2.FirstName);
     
    //Jusque là aucune requête ne devrait être lancée
     
    var res = res3.ToArray(); //claquage de requête
    Tu ne peux peut être pas être aussi fin qu'avec une requête SQL (je pense surtout à tous les "where a=1 and b=2 or(b=3 and c=5)" où tu es obligé de tout faire en même temps), mais on s'en approche et c'est plus propre je trouve...

    Sinon, dan slinq to EF, il y a moyen d'envoyer des requêtes SQL (jamais fait)... Mais du coup, je troyuve qu'on perd un peu l'intérêt.

    A+

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Je peux me tromper, mais pour moi ça serait plutôt ça :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var res1 = context.Table.Where(t=>t.val == 2);
    // La requête s'exécute : Linq to SQL
    var res2 = res1.OrderBy(r1=>r1.name);
    // Pas de requête à la base, tu tries dans ton objet : Linq
    var res3 = res2.Select(r2=>string.Format("{0} {1}",r2.Name + r2.FirstName);
    // Pas de requête à la base, tu tries dans ton objet : Linq
    var res = res3.ToArray();
    // Parse en Array

    En effet, si tu ne parse pas ton résultat, ce qui est tout à fait possible car rien ne t'empêche d'exploiter des IQueryable<User> (par exemple), tu auras bien un résultat dans ta collection.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/02/2017, 10h35
  2. [Débutant] Entity Clause Where et répéteur
    Par Pelote2012 dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 23/04/2012, 16h45
  3. LINQ clause where + ID entity
    Par Kikuts dans le forum Linq
    Réponses: 2
    Dernier message: 15/04/2011, 14h09
  4. probleme avec le caractere 'Z' dans ma clause WHERE
    Par dibox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/04/2004, 12h21
  5. [ character en simple cote ] clause Where
    Par hocinema dans le forum DB2
    Réponses: 3
    Dernier message: 20/02/2004, 10h17

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