如何在不包含导航属性的情况下进行包含?
我可以使用导航属性来获取子类别,但是此后,我需要获取这些子类别的所有成分(并且由于聚合根边界,我没有这些成分的nav。属性)。而且我不知道如何获得它们。
var cat = _context.Categories.Include(s => s.SubCategories).ToList();
答案 0 :(得分:0)
据我所知,您不能这样做,而不能不使用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'
}
}