在实体框架中加载子代

本文关键字:加载 实体 框架 | 更新日期: 2023-09-27 18:09:36

我有一个以下实体层次

  class ClassA {
  ICollection<ClassB> classBs { get; set; }
  }
  class ClassB {
     ClassC classC { get; set; }
     ClassD classD { get; set; }
  }
  class ClassC { 
  }
  class ClassD { 
  }

我希望当我加载类a的实例时,类b的所有相关实例以及类c和类d的相关实例都应该被填充。在我的存储库中编写的代码类似于:

 context.ClassAs.Include(c => c.classBs)

返回类b的所有相关实例,但类b有类c和类d,它们不会被填充。我查看了一些在线资源,但没有显示如何快速加载这种简单的层次结构。

在实体框架中加载子代

一个解决方案是使用Select只包含您想要加载的子节点的子节点,例如

context.ClassAs
       .Include(c => c.classBs.Select(c=>c.ClassC))
       .Include(c => c.classBs.Select(d=>d.ClassD))