Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > Entity Framework
Entity Framework Forum d'entraide sur le développement avec le modèle d'accès aux données Entity Framework de Microsoft.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/07/2012, 12h05   #1
etiennegaloup
Membre régulier
 
Inscription : juillet 2004
Messages : 289
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 289
Points : 77
Points : 77
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
Type de fichier : jpg ScreenShot.JPG (52,7 Ko, 23 affichages)
etiennegaloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2012, 15h32   #2
etiennegaloup
Membre régulier
 
Inscription : juillet 2004
Messages : 289
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 289
Points : 77
Points : 77
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
etiennegaloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2012, 09h46   #3
etiennegaloup
Membre régulier
 
Inscription : juillet 2004
Messages : 289
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 289
Points : 77
Points : 77
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
etiennegaloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web