gpt4 book ai didi

c# - Entity Framework - 包含在子查询中?

转载 作者:行者123 更新时间:2023-11-30 13:52:40 34 4
gpt4 key购买 nike

我不确定这个问题是否已经得到解答,我看了几个问题,但我认为它们不是我想要的。

假设我有 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 - Include in sub query? - Part 2

最佳答案

您仍然可以使用强类型版本来完成它。只需使用:

    Restaurant = context.Restaurant
.Include(r => r.MenuCategory.Select(m => m.MenuItems))
.FirstOrDefault(r => r.RestaurantId == resaurantId);

关于c# - Entity Framework - 包含在子查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662760/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com