【问题标题】:Entity Framework Core Include/ThenInclude to get the dataEntity Framework Core Include/ThenInclude 获取数据
【发布时间】:2021-05-07 15:28:35
【问题描述】:

我的数据库中有以下一对多关系的表:

a -> b
b -> c
b -> d

映射到模型中相应的导航属性。

我想从“a”获取数据以及来自“b,c,d”的所有相关数据。

如果我尝试:

dbcontext.a.Include(x => x.b)
           .ThenInclude(x => x.c)
           .ThenInclude(x => x.d)

我收到一个错误,因为这意味着关系 c -> d(而不是 b -> d)。

那么,如果我尝试:

dbcontext.a.Include(x => x.b)
           .ThenInclude(x => x.c)
           .Include(x => x.d)

我收到一个错误,因为这意味着关系 a -> d(而不是 b -> d)。

对于如何正确链接方法的帮助,我将不胜感激。

【问题讨论】:

    标签: c# sql-server entity-framework .net-core


    【解决方案1】:

    如果你使用 net5 试试这个

    dbcontext.a.Include(x => x.b)
                .ThenInclude(x => x.c)
                 .Include(x => x.b)
                .ThenInclude(x => x.d)
    

    或者为了避免重复你可以尝试(由@Marko测试)

    dbcontext.a.Include(x => x.b)
                .ThenInclude(x => x.c)
                 .Include(x => x.b.d)
               
    

    但我更喜欢使用这种语法(适用于所有版本)

    dbcontext.a.Include(x => x.b)
                .ThenInclude(x => x.c)
                 .Include("b.d")
    

    【讨论】:

    • 两次包含 x.b 是不是有点奇怪(和第一个例子一样)?
    • 是的,我同意你的看法。这就是我使用字符串的原因。
    • 一位专家建议我使用“.Include(x => x.b.d)”,但我不确定它是否有效。请尝试让我知道。
    • 你的意思是 .Include(x => x.b.d)?
    猜你喜欢
    • 2022-01-17
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多