我想创造一个更加结构化的方法来加载所需要的实体树:

我需要的数据严重金额,所以我使用类型安全包括做这个(只是一个正常的包括但和λ的)的作为此处所示。

正如我说,我需要大量的数据,基本上整个实体树1个父项下。

现在,我能做到这一点做这样的事情:

context.House
    .Include(x => x.Doors)
    .Include(x => x.Doors.FirstOrDefault().Joint)
    .Include(x => x.Doors.FirstOrDefault().Joint.FirstOrDefault().JointCategory)
    .Include(x => x.Doors.FirstOrDefault().Joint.FirstOrDefault().JointCategory.JointType)
    .Include(x => x.Windows)
    // ... same thing
    .Include(x => x.Roof)
    // ... same thing

正如你所看到的,此行充满了包括可以得到相当巨大。这实际上是在实际代码的一个非常简化的样品(其不包括顺便说一句房屋)

所以我想要做的是创造方法,负责其在树枝什么。其中,该方法可以接受的对象查询和包括孩子,反过来,称之为“儿童加载器方法”。此外,亲本不应该的问题,只要它具有与儿童的类型的属性。

这可能并没有太大的意义如此:

public void LoadHouse(int id)
{
    // ...
    ObjectQuery<House> query = context.House;

    // and now?
    LoadDoors(query, x => x.Door);

}

public void LoadDoors<T>(ObjectQuery<T> query, ..?..)
{
    // ... ?

    LoadJoints(...)


}

等。但我真的不能让我围绕它的头......有传入的查询和调用子方法之间的缺失环节。

有没有人做过这样的事情?或者,任何人都可以给我一些指点?

有帮助吗?

解决方案

尝试是这样的,而不是:

查询= LoadDoors(查询,X => x.Door);

其中LoadX返回调用包含的结果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top