EF Core包含多个子级别集合

考虑这个聚合根…

class Contact { ICollection Addresses { get; set; } ICollection Items { get; set; } ICollection Events { get; set; } } 

……我这样用过……

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

如何通过联系人急切加载所有集合?

我试过这个……

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

我也试过这个……

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

在某种程度上相关的说明,是否可以使用流畅的配置表达应该作为聚合根的一部分返回的内容?

ThenInclude模式允许您指定从根到单个叶的路径,因此,为了指定到另一个叶的路径,您需要使用Include方法从根重新启动进程,并为每个叶重复该过程。

对于您的样本,它将是这样的:

 Context.Set() .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 ...