c# - EFCore 包含但不带导航属性

标签 c# entity-framework-core

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

Database 代码

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/

相关文章:

sql-server - 同一服务器上的两个 DbContext 抛出 : This platform does not support distributed transactions

c# - EF Core 2.0.2 为子查询生成多个查询

entity-framework-core - .Net Core Entity Framework MySQL - 字符串字段仅存储 255 个符号

c# - 从用 C++ 编写的桌面应用程序过渡到基于 Web 的应用程序

c# - 在 Visual Studio 中使用 JavaScript

c# - 全局对象与多个新对象?

c# - 使用 subselect 优化 linq to sql 查询以获得最新结果

entity-framework - Entity Framework 核心: InvalidOperationException

c# - 如何在 MSBuild 任务中自定义错误代码链接

c# - 在运行时更改 EF Core 上下文的连接字符串