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

Framework .NET Discussion :

[Linq to Entities] Comment retourner le résultat d'une requête dans une méthode?


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut [Linq to Entities] Comment retourner le résultat d'une requête dans une méthode?
    bonjour à tous,
    j'ai commencé à travailler avec linq to entities et j'ai rencontré ce problème.
    je n'arrive pas à retourner le résultat d'une requête dans une méthode, même si j'ai créé une classe dans laquelle j'instancie le résultat (chaque row de table ) et que je mets dans un iqueryable, mais ca marche pas, et pour cause, ce n'est pas possible d'instantier une class paramétrable dans Linq to
    Entities, ( c'est le forum de ADO linq qui en parle )

    " Exception : Only parameterless constructors and initializers are supported in LINQ to Entities "


    quelqu'un aurait il rencontré le meme problème ?

    merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
         public IQueryable<DAO.TableMapping.Logiciel> listLogiciel()
            {
     
                GestionArchiveEntities entite = new GestionArchiveEntities();
                ObjectQuery<Logiciels> logiciels = entite.Logiciel;
                IQueryable<DAO.TableMapping.Logiciel> query = from p in logiciels
     
                            select new DAO.TableMapping.Logiciel ( p.titre, 1, p.verssion, p.description, p.date.Value, p.chemin );
     
               return  query;
            }

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    peut etre comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
         public IQueryable<DAO.TableMapping.Logiciel> listLogiciel()
            {
     
                GestionArchiveEntities entite = new GestionArchiveEntities();
                ObjectQuery<Logiciels> logiciels = entite.Logiciel;
                IQueryable<DAO.TableMapping.Logiciel> query = from p in logiciels
     
                            select new { p.titre, 1, p.verssion, p.description, p.date.Value, p.chemin };
              /// y a du code a faire ici
               return  query;
            }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
         public IQueryable<DAO.TableMapping.Logiciel> listLogiciel()
            {
     
                GestionArchiveEntities entite = new GestionArchiveEntities();
                ObjectQuery<Logiciels> logiciels = entite.Logiciel;
                IQueryable<DAO.TableMapping.Logiciel> query = from p in logiciels
     
                            select p;
     
               return  query;
            }
    Je ne pense pas que ce soit une tres bonne idée de revoyer des IQueryable dans ce genre d'archi...

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par anthyme Voir le message
    Je ne pense pas que ce soit une tres bonne idée de revoyer des IQueryable dans ce genre d'archi...
    +1 un petit IEnumerable<T> serais préférable

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut en réponses à vos réactions
    en fait j'ai oublié de mentionné que j'ai pas envie d'afficher tous les champs de la ligne, car le linq to entity ajoute trois ou 4 fields que j'ai pas envie de binder à mon datagrid, j'aimerais selectionner uniquement les champs dont j'ai besoin.

    j'ai fais plusieurs recherches sur le net disant qu'il était pas possible d'instantier une class dans une requête linq et ainsi de binder le résultat dans la class a chaque fois

    j'espère que quelqu'un a déjà rencontré le même problème que le miens.

    si je fais un select p, ca selectionne toute la ligne, c'est pour ca que j'ai fais un select new pour justement filtrer uniquement les field dont j'ai besoin.

    meci de votre attention.

  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    bin tu peux utiliser ma première requête puis encapsuler le résultat dans des objets

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut y'a t il moyen de faire mieux ?
    je voudrais savoir s'il est possible de faire mieux, car je suis pas vraiment convaincu par ma méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
      public List<DAO.TableMapping.Logiciel> listLogiciel()
            {
     
                GestionArchiveEntities entite = new GestionArchiveEntities();
                ObjectQuery<Logiciels> logiciels = entite.Logiciel;
                List<DAO.TableMapping.Logiciel> objects = new List<DAO.TableMapping.Logiciel>();
     
                var query = from p in entite.Logiciel
     
                            select new {p.id, p.titre,p.Categorie.nom, p.verssion, p.description, p.chemin };
                foreach (var q in query)
                    objects.Add(new DAO.TableMapping.Logiciel(q.id, q.titre, q.verssion, q.nom, q.description, q.chemin));
     
     
                return objects;
            }

Discussions similaires

  1. Résultat d'un champ d'une requête dans une variable
    Par PsychedeChed dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/01/2009, 12h50
  2. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  3. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  4. Réponses: 4
    Dernier message: 01/12/2005, 14h36
  5. Réponses: 4
    Dernier message: 14/09/2005, 17h23

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