有没有一种简单的方法来急切加载实体框架6中的所有dependend对象?

时间:2018-04-19 09:30:45

标签: c# entity-framework wcf entity-framework-6 eager-loading

我使用实体框架6来存储对象结构,使用wcf将它们传输给客户端。

让我们说我的班级结构看起来像这样:

+------------+
|            |
|   Class A  |
|            |
+------------+
      |1
      |
      |0.*
      v
+-----+------+
|            |
|   Class B  |
|            |
+------------+
      |1
      |
      |0.*
      v
+-----+------+
|            |
|   Class C  |
|            |
+------------+

或作为代码:

class ClassA{
    int ClassAId { get; set; }
    virtual ICollection<ClassB> ChildClasses{ get; set; }
}
class ClassB{
    int ClassBId { get; set; }
    virtual ClassA ParentClass { get; set; }
    virtual ICollection<ClassC> ChildClasses{ get; set; }
}
class ClassC{
    int ClassCId { get; set; }
    virtual ClassB ParentClass { get; set; }
    virtual ICollection<ClassB> ChildClasses{ get; set; }
}

现在,如果我想通过WCF服务获取ClassA - 对象及其所有依赖项,我需要急切加载所有依赖项:

public ClassA GetClassAEntry(int entryId){
    return DbContext.ClassAEntrys.Where(entry => entry.ClassAId == entryId)
    .Include(entry => entry.ChildClasses)
    .Include(entry => entry.ChildClasses.Select(child => child.ChildClasses))
}

如果我想扩展服务以查询ClassB个对象并返回整个对象图:

public ClassB GetClassBEntry(int entryId){
    return DbContext.ClassBEntrys.Where(entry => entry.ClassBId == entryId)
    .Include(entry => entry.ChildClasses)
    .Include(entry => entry.ParentClass)
    .Include(entry => entry.ParentClass.ChildClasses)
    .Include(entry => entry.ParentClass.ChildClasses.Select(child => child.ChildClasses))
}

我的真实世界模型包括9个类,因此包含似乎爆炸。

是否有更简单的方法来加载整个对象图,然后明确地Include()所有依赖项?

0 个答案:

没有答案
相关问题