gpt4 book ai didi

entity-framework - 使用 Entity Framework 预先加载聚合根

转载 作者:行者123 更新时间:2023-12-04 07:25:35 25 4
gpt4 key购买 nike

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

我需要大量数据,所以我使用类型安全的 Include(只是一个普通的 Include,但带有 L​​ambda 的)来执行此操作as shown here .

正如我所说,我需要大量数据,基本上是 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(...)


}

等等。但我真的无法理解它……传入查询和调用子方法之间缺少链接。

有没有人做过这样的事情?或者有人可以给我一些指示吗?

最佳答案

尝试这样的事情:

query = LoadDoors(query, x => x.Door);

其中 LoadX 返回调用 Include 的结果。

关于entity-framework - 使用 Entity Framework 预先加载聚合根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com