如何在没有导航属性的情况下执行包含?
我可以使用导航属性来获取子类别,但之后我需要获取这些子类别的所有成分(由于聚合根边界,我没有成分的 nav. 属性)。而且我不知道如何才能获得它们。
var cat = _context.Categories.Include(s => s.SubCategories).ToList();
最佳答案
据我所知,您不能,但使用 Include 则不行。为此,您需要使用链接键作为子句来使用单独的请求/查询。
但是如果您需要以这种方式引用它,为什么不将其设为导航属性呢?这正是它们的用途。
因此,如果您有类别 ID,那么这就是您循环遍历成分的方式。您应该能够从此开始工作以到达您需要去的地方:
var catId = 999;
foreach(var subCat in _context.SubCategories.Where(u => u.CategoryId == catId))
{
foreach(var ingredient in _context.Ingredients.Where(u => u.SubCategoryId == subCat.Id))
{
// do work on 'ingredient'
}
}
关于c# - EFCore 包含但不带导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598028/