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 :

Appeler une méthode d'une entité dans le select [Débutant]


Sujet :

Linq

  1. #1
    Membre habitué
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Points : 135
    Points
    135
    Par défaut Appeler une méthode d'une entité dans le select
    Bonjour,

    Est-il possible d'appeler une méthode executant une requete dans la clause select d'une requete linq ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    from facture in Context.facture
    select new FactureDetail
    {
    ...
    reglementPrecedent = evt.GetTotalReglement()
    ...
    }
    Dans GetTotalReglement(), il y a plusieurs requêtes que j'aimerais regrouper là pour simplifier la manière de charger les règlements précédents

    Cette méthode est très souvent utilisée donc je n'ai pas envie pour des questions de maintenance de code d’implémenter sa logique dans toutes les requetes linq.

    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est bien sûr possible, pour peu que GetTotalReglement soit du même type que la propriété reglementPrecedent.

    Cependant il faut veiller à ce que l'exécution de la méthode GetTotalReglement soit la plus rapide possible, afin de ne pas ralentir la requête... Une autre idée serait de rajouter une propriété sur ton objet evt qui contiendrait cette information, comme ça lors de la requête tu n'aurais pas à déclencher l'exécution d'une méthode pour chaque ligne retournée.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre habitué
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Points : 135
    Points
    135
    Par défaut
    Merci DotNetMatt,

    J'ai posé la question car je pensais que cela était impossible. En effet, j'ai le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    linq to entities ne reconnaît pas la méthode « decimal GetTotalReglement, et cette dernière ne peut pas être traduite en expression de magasin.
    La methode GetTotalReglement est écrite en Linq To Entity.

    De ce que j'ai trouvé, il faut forcement créer une "Model defined functions" dans le fichier CSDL.

    Confirmez vous cela ?

    Merci !

  4. #4
    Membre habitué
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Points : 135
    Points
    135
    Par défaut
    Avec le code ci dessous, c'est bon,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    (from facture in Context.facture select new {facture}).AsEnumerable()).Select
    (
    Select(x => new FactureDetail
    {
    ...
    reglementPrecedent = facture.GetTotalReglement()
    ...
    }
    )

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

Discussions similaires

  1. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  2. Réponses: 0
    Dernier message: 30/09/2009, 18h42
  3. Réponses: 6
    Dernier message: 20/04/2007, 15h24
  4. Réponses: 2
    Dernier message: 31/08/2005, 16h12

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