Я не уверен, что на этот вопрос уже ответили, я посмотрел пару вопросов, но я не думаю, что они были совсем такими, как я.
Допустим, у меня есть 3 таблицы:
Restaurant 1.....M MenuCategory 1.....M MenuItem
У меня есть запрос L2E, который выглядит примерно так:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Что работает до некоторой степени, но только предварительно загружает категории меню.
В качестве обходного пути я могу перебирать каждую категорию и вызывать .Load () для них, но это потребует гораздо большего, чем теоретически, мне нужно.
То, что я действительно хочу сделать, это что-то вроде:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.Include(r => r.MenuCategory.MenuItems)
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Но очевидно, что это недоступно, так как r.MenuCategory является перечисляемым
ОТВЕТ 1:
context.Restaurant.Include ( "MenuCategory.MenuItems");
- Это работает, но не сильно напечатано. Интересно, сможет ли кто-нибудь придумать второй ответ, который строго напечатан (я могу перенести это на другой вопрос, поскольку на него уже дан ответ, и я ответил хорошо.
Я перенес это на другой вопрос, так как чувствовал, что несправедливо отказываться от идеального ответа, который работает именно так, как и должен:
Entity Framework - Включить в подзапрос? - часть 2