Pau*_*aul 3 c# linq-to-entities entity-framework include
我不确定这是否已经回答了,我看了几个问题,但我认为它们不是我所追求的.
假设我有3个表:
Restaurant 1.....M MenuCategory 1.....M MenuItem
Run Code Online (Sandbox Code Playgroud)
我有一个L2E查询,看起来像这样:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Run Code Online (Sandbox Code Playgroud)
这在某种程度上起作用,但它只预加载菜单类别.
作为一种解决方法,我能够遍历每个类别并在它们上面调用.Load(),但这将涉及到理论上我应该需要的更多内容.
我真正希望能做的是:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.Include(r => r.MenuCategory.MenuItems)
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Run Code Online (Sandbox Code Playgroud)
但显然这不可用,因为r.MenuCategory是一个可枚举的
答案1:
context.Restaurant.Include( "MenuCategory.MenuItems");
我把这个问题转移到了另一个问题上,因为我认为从一个完美的答案中拿出一个完全正确的答案是不公平的:
您仍然可以使用强类型版本来执行此操作.只需使用:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory.Select(m => m.MenuItems))
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Run Code Online (Sandbox Code Playgroud)