如何在LINQ中执行嵌套一对多关联查询并加载深层关联实体
正确加载嵌套关联实体的实现方式
当你需要加载Receipt关联的ReceiptDetails,同时还要加载每个ReceiptDetail对应的Product时,不能直接用多个平级的Include或者直接链式点属性,得用嵌套关联加载的专用写法:
EF Core 写法
用Include加载一级关联后,通过ThenInclude指定嵌套的二级关联:
context.Receipt .Include(m => m.ReceiptDetails) .ThenInclude(detail => detail.Product);
Include(m => m.ReceiptDetails):负责加载当前Receipt对应的所有ReceiptDetail集合ThenInclude(detail => detail.Product):针对每个已加载的ReceiptDetail,继续加载其关联的Product实体
EF6 写法
如果是使用Entity Framework 6,写法略有不同,需要在Include里通过Select指定嵌套关联:
context.Receipt.Include(m => m.ReceiptDetails.Select(d => d.Product));
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

