EF Core Include在多个子级集合上
本文关键字:集合 Core Include EF | 更新日期: 2023-09-27 18:14:29
考虑这个聚合根…
class Contact
{
ICollection<ContactAddress> Addresses { get; set; }
ICollection<ContactItem> Items { get; set; }
ICollection<ContactEvent> Events { get; set; }
}
…
class Person
{
Contact ContactDetails { get; set; }
}
我如何急切加载所有的集合与联系人?
I tried this…
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
...
参考:加载相关数据-包括多个级别