EFCore Include,不带导航属性

时间:2019-02-08 18:06:34

标签: c# entity-framework-core

如何在不包含导航属性的情况下进行包含?
我可以使用导航属性来获取子类别,但是此后,我需要获取这些子类别的所有成分(并且由于聚合根边界,我没有这些成分的nav。属性)。而且我不知道如何获得它们。

Database 代码

var cat = _context.Categories.Include(s => s.SubCategories).ToList();

1 个答案:

答案 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'
    }
}