我使用实体框架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()
所有依赖项?