Je ne sais pas si on a déjà répondu à cette question. J’ai regardé quelques questions, mais je ne pense pas qu’elles étaient tout à fait ce que je voulais.
Disons que j’ai 3 tables:
Restaurant 1.....M MenuCategory 1.....M MenuItem
J’ai une requête L2E qui ressemble à ceci:
Restaurant = context.Restaurant .Include(r => r.MenuCategory) .FirstOrDefault(r => r.RestaurantId == resaurantId);
Ce qui fonctionne dans une certaine mesure, mais il ne fait que précharger les catégories de menus.
En tant que solution de contournement, je peux parcourir chaque catégorie et appeler .Load (), mais cela impliquera de toucher beaucoup plus que ce dont je devrais théoriquement avoir besoin.
Ce que je veux vraiment pouvoir faire, c’est quelque chose comme:
Restaurant = context.Restaurant .Include(r => r.MenuCategory) .Include(r => r.MenuCategory.MenuItems) .FirstOrDefault(r => r.RestaurantId == resaurantId);
Mais clairement ce n’est pas disponible car r.MenuCategory est un énumérable
RÉPONSE 1:
context.Restaurant.Include (“MenuCategory.MenuItems”);
J’ai déplacé ceci à une autre question car j’estimais qu’il était injuste d’enlever une réponse parfaite et qui fonctionne exactement comme il se doit:
Entity Framework – Inclure dans la sous-requête? – Partie 2
Ce lien ici semble résoudre votre problème?
var result = context.Restaurant.Include("MenuCategory.MenuItems");
Vous pouvez toujours utiliser la version fortement typée pour le faire. Il suffit d’utiliser:
Restaurant = context.Restaurant .Include(r => r.MenuCategory.Select(m => m.MenuItems)) .FirstOrDefault(r => r.RestaurantId == resaurantId);