Entity framework 在实体中显式加载相关实体

Entity framework 在实体中显式加载相关实体,entity-framework,orm,entity-framework-5,Entity Framework,Orm,Entity Framework 5,我的对象图如下所示: Public ClassA { public int Id { get; set; } public virtual ICollection<ClassB> ClassB_List { get; set; } } Public ClassB { public int Id { get; set; } public virtual ICollection<ClassC> ClassC_List { get; set; } }

我的对象图如下所示:

Public ClassA
{
   public int Id { get; set; }
   public virtual ICollection<ClassB> ClassB_List { get; set; }
}

Public ClassB
{
   public int Id { get; set; }
   public virtual ICollection<ClassC> ClassC_List { get; set; }
}

Public ClassC
{
   public int Id { get; set; }
}
然而,我不知道如何在ClassB_列表中为ClassC_列表加载每个子项,而不诉诸下面这样的垃圾:

classA.ClassB_List.ToList().ForEach(c => context.Entry(c).Collection("ClassC_List").Load());
 var c = context.ClassA_list;

 if (IWantTheRelatedTable)
 {
    c = c.Include("ClassB_List.ClassC_List");
 }

 var result = c.ToList();
我发现的另一种方法是在上下文中使用Include:

var c = context.ClassA_list
                          .Include("ClassB_List.ClassC_List")
                          .ToList();
如果DBContext模型中已经包含了该属性,那么这对于ClassA实例列表来说是很好的,但我通常不想这样做,只想显式地使用load。
有什么想法吗?

您使用了两种方式来快速加载:

包括 负载 如果您需要一些灵活性,可以执行以下操作:

classA.ClassB_List.ToList().ForEach(c => context.Entry(c).Collection("ClassC_List").Load());
 var c = context.ClassA_list;

 if (IWantTheRelatedTable)
 {
    c = c.Include("ClassB_List.ClassC_List");
 }

 var result = c.ToList();

构建IQueryable,然后当它包含了您需要的所有内容时,您就可以执行它。

由于我喜欢为单亲实体而不是列表加载相关实体,所以可以通过显式加载而不使用即时加载来完成这一操作吗?