Je souhaite créer un graphique d'objet à l'aide d'Entity Framework 4.2.EF4 Obtention d'associations dans des requêtes distinctes lors de l'utilisation de POCO
À l'heure actuelle, j'ai des entités POCO, en utilisant ICollection pour les propriétés de navigation. Je veux éviter d'utiliser EntityCollection ou quoi que ce soit d'autre EF.
Je souhaite éviter les jointures massives provoquées par l'utilisation excessive d'Include. Étant donné un objet, je veux remplir ses propriétés de navigation, résultant en une requête de base de données séparée.
Existe-t-il un moyen de remplir une ICollection directement? En ce moment, je travaille sur le problème, mais c'est vraiment douloureux.
// grab the user, brand users and brands
User user = entities.Users
.Include(item => item.BrandUsers.Select(brandUser => brandUser.Brand))
.Where(item => item.Name == userName)
.SingleOrDefault();
// grab the pending share grants and brands
entities.Users
.Include(item => item.ToShareGrants.Select(shareGrant => shareGrant.Brand))
.Where(item => item.Id == user.Id)
.Load();
return user;
Une chose que je n'aime pas cette approche est que je suis re-interroger l'objet de niveau supérieur. Si je ne fais pas cela, la propriété de navigation n'est pas remplie (left NULL) quand aucun objet n'est retourné. Par exemple, le code suivant seulement fonctionne que si les résultats sont retournés:
entities.ShareGrants
.Include(item => item.Brand)
.Where(item => item.ToUserId == user.Id)
.Load();
J'étais curieux de savoir s'il y avait juste une méthode que je ne connaissais pas dans le cadre de l'entité pour la construction de ces types de relations. Si quelqu'un connaît une approche facile pour remplir les propriétés de navigation par étapes, j'apprécierais un échantillon de code.
J'ai un chargement paresseux et la génération de proxy est désactivée. Il semble qu'Inclus est le seul moyen de remplir les propriétés de navigation. Ce que je recherche est un moyen de charger explicitement les propriétés de navigation (via une requête de base de données). –