簡體   English   中英

EF Core 包含在多個子級集合中

[英]EF Core Include on multiple sub-level collections

考慮這個聚合根...

class Contact 
{
    ICollection<ContactAddress> Addresses { get; set; }
    ICollection<ContactItem> Items { get; set; }
    ICollection<ContactEvent> Events { get; set; }
}

......我像這樣使用過......

class Person 
{
    Contact ContactDetails { get; set; }
}

我如何急切加載聯系人的所有集合?

我試過這個...

Context
    .Set<Person>()
    .Include(o => o.ContactDetails)
    .ThenInclude(o => o.Addresses)
    .ThenInclude(????)
    . ...

我也試過這個...

Context
    .Set<Business>()
    .Include(o => o.ContactDetails.Addresses)
    .Include(o => o.ContactDetails.Events)
    .Include(o => o.ContactDetails.Items)

在有些相關的說明中,是否可以使用流暢的配置來表達應該作為聚合根的一部分返回的內容?

ThenInclude模式允許您指定從根到單個葉子的路徑,因此為了指定到另一個葉子的路徑,您需要使用Include方法從根重新啟動該過程,並對每個葉子重復該過程。

對於您的示例,它會是這樣的:

Context.Set<Person>()
    .Include(o => o.ContactDetails).ThenInclude(o => o.Addresses) // ContactDetails.Addresses 
    .Include(o => o.ContactDetails).ThenInclude(o => o.Items) // ContactDetails.Items
    .Include(o => o.ContactDetails).ThenInclude(o => o.Events) // ContactDetails.Events
    ...

參考: 加載相關數據 - 包括多個級別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM