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

    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
    306
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 306
    Points : 92
    Points
    92

    Par défaut

    Bonjour,

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

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    306
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 306
    Points : 92
    Points
    92

    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# : Sélectionner tout - Visualiser dans une fenêtre à part
    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# : Sélectionner tout - Visualiser dans une fenêtre à part
    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# : Sélectionner tout - Visualiser dans une fenêtre à part
    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