在Entity Framework Core中加載多個級別的相關數據不能按預期工作

c# eager-loading entity-framework entity-framework-core

我想急切地加載一些與Article對象相關的數據。

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或為空。 eg no tags, no author, no approver .. etc.

查詢按原樣運行(使用註釋掉的行)。

但是,如果我包含嵌套的ThenInclude() ,它將失敗並顯示錯誤:

System.ArgumentNullException:值不能為null。參數名稱:source

我認為這是因為該文章沒有標籤,並且它試圖急切地加載不存在的標籤的值。我如何急切地加載文章可能存在或可能不存在的所有標籤數據?

一般承認的答案

試試.Include(x => x.ArticleTags.Tag?.Value)



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow