问题标签 [eager-loading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1089 浏览

graph - 在 sqlalchemy 中加入加载/急切加载整个(子)图

假设我有一个Task可以依赖于 other 的对象Tasks。有没有办法明智地急切/加入加载所有给定任务的子任务集?

0 投票
1 回答
588 浏览

ruby-on-rails - 思考狮身人面像搜索有两个类和急切加载

我使用 TS 同时搜索 2 个模型(类):

在控制器中:

是否有可能以某种方式使用急切加载:variants

0 投票
3 回答
7804 浏览

entity-framework - Linq to entity - 如何在其 entitycollection 上选择具有 where 条件的实体?

我发现有好几次有人问同样的问题,但似乎答案从来都不是令人满意的,尽管它应该很容易(理论上)。这是我的问题:

我有一个名为“Company”的实体,其中有一个 entityCollection“Employees”(一对多)。我需要检索所有公司,对于每个公司,我只想要年龄大于 21 的员工。

我试过了 :

这不起作用,因为如果至少有一个高于 21 的人,它会给我每家公司的所有员工(它实际上与 .Any() 相同)

我试过了 :

这也不起作用(尽管它本来是完美的),它给了我以下错误:无法在 LINQ to Entities 查询中构造实体或复杂类型“MyModel.Company”。

你怎么能选择我所有的公司,每个公司的员工都在 21 岁以上?目前,我选择了所有,在客户端,我过滤了我的员工,但我不喜欢那个解决方案。

有谁能够帮我 ?


谢谢Morteza Manavi-Parast,它将完成工作!

尽管如此,我很难说服自己在唯一查询中这样做并没有在实体框架中实现。这是一个相对普遍的情况......作为证明,这个论坛上有很多像我这样的问题。

我很惊讶......也许下一个版本?


需要明确的是,我需要一个公司列表,因为我将查询结果直接绑定到数据网格。供您参考,当我单击数据网格的一行(因此选择一家公司)时,我有第二个网格,其中填充了来自 entityCollection 的员工(21 岁以上)。

0 投票
1 回答
617 浏览

nhibernate - NHibernate 双重获取不存在的多对一关系

我有一个具有多个多对一关系的实体,我发现我可以在一个查询中急切地获取它们,如下所示:

但是,关系并不总是存在,我已经定义了这样的映射:

我发现当关系不存在时,NHibernate 会生成第二个 SQL 查询来查找它,大概是因为它发现该属性为空。

我的第一个问题是,如何防止第二个 sql 查询?

我的第二个问题是,有没有一种更简单的方法可以将这个提取到一个查询中?人们希望在一个查询中获取所有内容,而不是为每个多对一关系单独查询(这似乎是默认行为),这似乎是非常基本的行为。

0 投票
7 回答
28619 浏览

java - 强制急切加载其他延迟加载的属性

我有一个 Hibernate 对象,它的属性都是惰性加载的。这些属性中的大多数是其他 Hibernate 对象或 PersistentSet。

现在我想强制 Hibernate 一次性加载这些属性。

当然,我可以“触摸”这些属性中的每一个,object.getSite().size()但也许还有另一种方法可以实现我的目标。

0 投票
1 回答
1943 浏览

c# - 实体框架 4 抽象模型 - 如何以编程方式急切加载导航属性?

我有一个用抽象实体/类构建的 EF4 模型:

替代文字

请注意State实体如何具有名为Country的导航属性。

注意:我禁用了延迟加载,所以我必须按需加载。

现在,如果我有以下方法:

默认情况下,这不会返回任何关联。但是,当我明确想要时,如何动态地预先加载关联?

我不能做到这一点:

因为我正在使用一个名为Location的抽象类,它没有名为“Country”的导航属性。在我实际执行查询之前,我不知道.SingleOrDefault派生类型是什么。

所以,这就是我必须做的:

本质上,我正在做 2 个相同的电话。它有效吗?是的。漂亮吗?不,这并不是真正的“急切加载”。

我知道这不是正确的解决方案,你们能想到正确的解决方案吗?(是的,我知道我可以使用存储过程,但我真的很想在这里查看我的存储库/模型,以便实体正确地附加到图表上,准备好进行编辑)。

即使.Include导致左外连接,问题是我正在处理“位置”实体集。我需要.Include在“状态”上,但“状态”属于“位置”实体集(派生类属于其父实体集)。

所以我想我的问题实际上很笼统——当我们事先不知道孩子是什么时,我们如何在抽象实体的孩子上做一个 .Include ?

请记住,我不能.OfType<T>()先使用(然后是派生类型上的 .Include),因为我不知道 T 是什么(调用代码也不知道),因此这里不能使用泛型。

0 投票
3 回答
2733 浏览

nhibernate - linq 在 mvc 应用程序中休眠和急切加载的问题

您好,我有以下代码可以使用带有 linq 的 nhibernate 3.0 从我的数据库中检索数据-

当我尝试将其传递给视图时,我收到以下不是很具体的错误。当我不急于使用以下加载时,这工作正常 -

但是每次其他实体延迟加载时,我都会创建一个单独的查询。有没有人在此之前看到过这可能会指出我正确的方向。感谢您的任何想法。

0 投票
1 回答
471 浏览

google-app-engine - GAE Datastore 是否支持 Eager fetching?

假设我想显示书籍及其作者的列表。在传统的数据库设计中,我会发出一个查询来从Book表和相关Author表中检索行,这一步称为eager fetching。这样做是为了避免可怕的N+1 选择问题:如果Author记录被延迟检索,我的程序将不得不为每个作者发出单独的查询,查询的数量可能与列表中的书籍一样多。

Google App Engine Datastore 是否提供了类似的机制,还是 N+1 选择问题在此平台上不再相关?

0 投票
1 回答
3654 浏览

entity-framework - EF4 LINQ 排序父集合和所有具有急切加载 (.Include()) 的子集合

我在网格上进行分层数据绑定,我需要让数据库服务器对我的对象执行排序。我可以轻松地对父集合进行排序,但我似乎无法弄清楚如何对所有子集合进行排序。我有一个模型,它的子集合嵌套了 3 层,所有这些集合都需要排序。

这是我要完成的示例模型:

我正在尝试加载“年份”对象列表。这有一个 Makes 集合,其中有一个 Models 集合,该集合有一个 Colors 集合。我需要根据它们的 name 属性对所有这些对象进行排序。

我试过这样做:

但它。” 只是从中选择的表的别名......在本例中为“年”。有什么方法可以为子表创建别名,以便我可以在单个查询中对它们进行排序?

0 投票
2 回答
998 浏览

.net - .Net4 Link-to-EF 中的急切加载;可能像 DataLoadOptions

我正在使用 VS2010 .Net4 Linq-to-EntityFramework 并希望显式加载一些子数据。我想提供类似于DataLoadOptionsLoadWith的功能,这些功能可用于 Linq-to-SQL IIUC,但不适用于 Linq-to-EF。

(顺便说一句,这样我可以记录数据以便稍后在测试期间播放。我们使用了延迟加载,我需要找到这些事件并替换为急切加载。DataLoadOptions方法将允许一种干净的方式来实现这一点.)

我正在尝试提供一种类型安全的急切加载方案,如MosesOfEgypt 博客中所述。我已经修改了 T4 的一代,并且遇到了我认为是最后一个问题。在 .Net4 中,实体属性返回ObjectSet。但不幸的是,Include函数返回ObjectQuery,它是ObjectSet的基类。

这是从修改后的 T4 模板生成的 ObjectContext 类的子集:

以“ * ”开头的行是从ObjectQueryObjectSet的转换发生的地方。而且这是一个无效的向上转换,因此如果在设计时显式转换,将在运行时失败,除非我做错了。

一种解决方案可能是为ObjectSet.Include编写扩展方法,以便它返回ObjectSet而不是ObjectQuery。如果可能的话,我想知道如何找到ObjectQuery.Include函数的源代码。而且我不确定这些解决方案是否有效。

还想知道是否有办法将Include函数的结果从ObjectQuery向上转换到ObjectSet。同样,不确定这是否可行。

任何有关在 .Net4 中为 Linq-to-EF 实现 DataLoadOptions 功能的帮助将不胜感激。