Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre régulier
    Inscrit en
    juillet 2004
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 301
    Points : 81
    Points
    81

    Par défaut Héritage, obtenir les sous-collections de plusieurs associations many-many

    Bonjour,

    j'ai défini sous Entity Framework un héritage de type "Table-Per-Type".
    J'ai attaché un screenshot du schéma.

    J'aimerais obtenir en une seule requête tous les favoris de mesure et de graphe créés et partagés par un utilisateur ainsi que les tags associés.
    Quelle instruction dois-je utiliser ?

    Merci d'avance,
    Etienne
    Images attachées Images attachées

  2. #2
    Membre régulier
    Inscrit en
    juillet 2004
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 301
    Points : 81
    Points
    81

    Par défaut

    Bonjour,

    je parviens à obtenir les favoris créés et en lecture d'un utilisateur:

    Code c# :
    var user= histoEntities.UtilisateurSet.Include("FavorisCrees").Include("FavorisLecture").Where(u => u.SID == sidUser).FirstOrDefault();

    J'obtiens en résultat l'utilisateur correspondant au SID ainsi que les "Favoris de Tags" et les "Favoris de Graphes" créés et partagés.
    Pour que ce soit complet, j'aimerais pouvoir récupérer dans le même temps les collections de Tags associées aux "Favoris de Tags" et les collection de Traces associées aux "Favoris de Graphes".
    Comment puis-je procéder d'après vous ?

    Merci d'avance,
    Cordialement,
    Etienne

  3. #3
    Membre régulier
    Inscrit en
    juillet 2004
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 301
    Points : 81
    Points
    81

    Par défaut

    Bonjour,

    A défaut d'avoir trouvé une solution convenable, j'ai procédé de la manière suivante.
    Dans un premier temps, je récupère l'utilisateur correspondant au SID, ainsi que l'ensemble des favoris qu'il a créé et ceux auquel il a accès en lecture:

    Code c# :
    1
    2
    3
    4
    5
    6
    // Initialisation de la requête de recherche de l'utilisateur connecté
    var query = histoContext.UtilisateurSet
    .Include("FavorisCrees")
    .Include("FavorisLecture")
    .Where(u => u.SID == sidUser);
    usr = query.FirstOrDefault();

    Ensuite, je parcours tous les favoris de type FavoriMesure pour obtenir la collection de tags associée:

    Code c# :
    1
    2
    3
    // Chargement des Favoris de Tags de l'utilisateur authentifié
    foreach (FavoriTag fTag in favoris.OfType<FavoriMesure>())
       histoContext.LoadProperty<FavoriMesure>(fTag, ft => ft.Tags);

    Puis, je parcours tous les favoris de type FavoriTrend pour obtenir la collection de FavoriTrace associée:
    Code c# :
    1
    2
    3
    4
     
    // Chargement des Favoris de Trends de l'utilisateur authentifié
    foreach (FavoriTrend fTrend in favoris.OfType<FavoriTrend>())
       histoContext.LoadProperty<FavoriTrend>(fTrend, ft => ft.FavoriTraces);

    C'est un peu dommage de devoir parcourir les collections de Favoris pour charger les Tags et les FavoriTraces mais c'est tout ce que j'ai trouvé de mieux pour le moment.
    N'y aurait-il pas une autre solution selon vous ?

    Merci d'avance,
    Etienne

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •