如何使用LINQ包含同一子集合的两个关联对象?
解决方案
要同时加载CollectionB关联的ObjectC和ObjectD,你需要针对每个子对象单独构建Include+ThenInclude的链,代码如下:
var a = _context.ModelA .Include(x => x.CollectionB).ThenInclude(x => x.ObjectC) .Include(x => x.CollectionB).ThenInclude(x => x.ObjectD);
说明
因为CollectionB是集合类型的导航属性,EF Core无法在一条ThenInclude里同时加载多个子关联对象,所以必须分别对每个需要加载的子对象(ObjectC和ObjectD)重复调用Include(x => x.CollectionB),再通过ThenInclude指向对应的子对象。
这样执行查询时,EF Core会一次性加载ModelA、关联的CollectionB集合,以及每个CollectionB实例关联的ObjectC和ObjectD。
内容的提问来源于stack exchange,提问作者Steve Schlichter
相关产品推荐
相关产品推荐

