我不确定这个问题是否已经得到解答,我查看了几个问题,但我认为它们并不是我想要的。
假设我有 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");
- 这可行,但不是强类型的。我想知道是否有人能够提出第二个强类型的答案(我可以将其转移到另一个问题,因为这个问题已经得到回答,并且回答得很好。
我已将其转移到另一个问题,因为我觉得剥夺一个完美且完全正常工作的答案是不公平的:
实体框架 - 包含在子查询中? - 第2部分 https://stackoverflow.com/questions/1663783/entity-framework-include-in-sub-query-part-2
您仍然可以使用强类型版本来执行此操作。只需使用:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory.Select(m => m.MenuItems))
.FirstOrDefault(r => r.RestaurantId == resaurantId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)