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 :

Construction de modeles et sous modeles via une requete


Sujet :

Entity Framework

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Construction de modeles et sous modeles via une requete
    Bonjour à tous,

    Je cherche le moyen de pouvoir contruire un modele directement via une requete linq accèdant à la base de données au travers d'EF.
    Mon soucis se porte sur le fait que mon modele possède une propriété qui est une liste de modeles (un autre type).
    Ce qui donne en schématisant un peu l'arbre suivant :

    ModeleA -> Property ListeModelesB de type ModeleB

    Dans les requetes linq EF, on peut remplir directement un modele via une commande du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ListeModelesA as List(Of ModeleA) = (From e in DB.TblE Select New ModeleA With {.PropA = e.A, PropB = e.B}).ToList
    J'aimerai pouvoir remplir ma propriété ListeModelesB directement dans cette requete mais je n'y arrive pas. J'ai bien essayé une sous requete avec un ToList au bout mais il me dit qu'il n'arrive pas à traduire ca en requete.

    Existe-t-il une méthode permettant de le faire svp ?

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ListeModelesA as List(Of ModeleA) = (From e in DB.TblE Select New ModeleA With {.PropA = e.A, PropB = e.B}).ToList
    Existe-t-il une méthode permettant de le faire svp ?
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim ListeModelesA as List(Of ModeleA) = (From e in DB.TblE.Include("B") Select New ModeleA With {.PropA = e.A, PropB = e.B}).ToList

    Remarque que j'ai mis Include("B").

    PS : penses à donner des noms explicites à tes champs.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Merci pour la réponse mais ce n'est pas tout à fait ca.
    Voila un exemple concret de ce que j'aimerai faire (PS : Les includes sont faits )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ListeCategories as List(Of CategoryModel) = (From c in DB.TblCategories Select New CategoryModel With {.Name = e.Name, Articles = (from a in DB.TblArticles Where a.IdCategory = c.Id Select New ArticleModel With {.Name = a.Name, .Price = a.Price}).ToList }).ToList

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bah !
    Je ne vois pas d'include dans ta requête

    Sinon tu reçois quoi comme erreur en exécutant ta requête précédente ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Oui en fait je ne fais pas vraiment ma requete comme ca. En fait je recupère un objectquery(of T) sur lequel je balance tous mes includes ^^

    L'erreur est la suivante :

    LINQ to Entities ne reconnaît pas la méthode « System.Collections.Generic.List`1[DTO.XXXXX] ToList[XXXXX](System.Collections.Generic.IEnumerable`1[DTO.XXXXX]) », et cette dernière ne peut pas être traduite en expression de magasin.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    et si je vire le ToList de ma sous requete :

    Impossible d'effectuer un cast du type « System.Collections.Generic.IEnumerable`1 » en type « System.Collections.Generic.List`1 ». LINQ to Entities ne prend en charge que le cast des types primitifs EDM (Entity Data Model).

  7. #7
    Invité
    Invité(e)
    Par défaut
    T'as essayé ça :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim ListeCategories as List(Of CategoryModel) = (From c in DB.TblCategories.Include("TblArticles") Select New CategoryModel With {.Name = e.Name, Articles = e.TblArticles }).ToList

    Tu dois inclure la liste des articles associés à une catégorie et éviter l'utilisation des types anonymes dans ta sous-requête.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut,

    Dans ta réponse, tu indiques Articles = e.TblArticles.
    Le problème c'est que dans Articles je ne veux pas stocker les entités Articles mais des modèles construits à partir des entités Articles.
    Là est tout le problème. Les includes sont bien faits, ça, ça ne pose aucun problème.

Discussions similaires

  1. [Débutant] Appeler une sous propriété via une chaine de caractère
    Par chtinis dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/06/2015, 14h48
  2. [AC-2003] Filtrer un sous-formulaire via une liste deroulante
    Par Shikam dans le forum IHM
    Réponses: 4
    Dernier message: 07/06/2010, 10h45
  3. Internet sous linux via une clé usb 3G sous windows
    Par aperrin dans le forum Réseau
    Réponses: 1
    Dernier message: 19/05/2010, 20h05
  4. [CR 10] Génerer des sous-rapports via une boucle
    Par Marco94 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 11/08/2009, 15h30
  5. Réponses: 1
    Dernier message: 23/06/2009, 11h59

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