我不确定这是否已经回答了,我看了几个问题,但我认为它们不是我想要的。
假设我有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”);
我已将此问题转移到另一个问题上,因为我认为从一个完美的答案中取出并完全按照应有的方式行事是不公平的:
答案 0 :(得分:7)
您仍然可以使用强类型版本来执行此操作。只需使用:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory.Select(m => m.MenuItems))
.FirstOrDefault(r => r.RestaurantId == resaurantId);
答案 1 :(得分:2)
This link here似乎解决了您的问题?
var result = context.Restaurant.Include("MenuCategory.MenuItems");