C# 在实体框架核心中加载多个级别的相关数据未按预期工作

C# 在实体框架核心中加载多个级别的相关数据未按预期工作,c#,entity-framework,entity-framework-core,eager-loading,C#,Entity Framework,Entity Framework Core,Eager Loading,我想急切地加载一些与文章对象相关的数据 return await context.Articles .Include(x => x.ArticleTags) .ThenInclude(x => x.Tag) // .ThenInclude(x => x.Value) .Include(x => x.Author) .ThenInclude(x => x.UserInfo) .Includ

我想急切地加载一些与
文章
对象相关的数据

return await context.Articles
    .Include(x => x.ArticleTags)
        .ThenInclude(x => x.Tag)
            // .ThenInclude(x => x.Value)
    .Include(x => x.Author)
        .ThenInclude(x => x.UserInfo)
    .Include(x => x.Approver)
        .ThenInclude(x => x.UserInfo)
    .Include(x => x.Rejecter)
        .ThenInclude(x => x.UserInfo)
    .Include(x => x.LinkSubmitter)
        .ThenInclude(x => x.UserInfo)
    .FirstOrDefaultAsync(x => x.Id == id);
在本文对象中,所有显示的属性都可以为null或空<代码>例如,无标签、无作者、无批准人。。等等。

查询按原样工作(带有注释掉的行)

但是,如果我包含嵌套的
然后包含()
,它将失败并出现错误:

System.ArgumentNullException:值不能为null。参数名称:源


我相信这样做的原因是因为文章没有标签,它试图急切地加载不存在的标签的值。我如何急切地加载文章中可能存在或不存在的所有标记数据

尝试
。包括(x=>x.ArticleTags.Tag?.Value)

运行到同一个问题OK,尝试添加?。更新的回答没有为我编译值是什么类型的?值是字符串从注释中看起来像
Value
属性是
string
Include
/
然后Include
用于加载相关数据,即导航属性。它不能与基元属性一起使用,因为它们与相应的实体一起加载。