问题标签 [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.
c# - LINQ to SQL 预加载条件
我正在尝试学习 LINQ to SQL,并且我发现了 LoadWith 函数。我找到的所有示例都会从您在 LoadWith 函数中指定的表中加载所有记录,例如
我想知道的是,在这个例子中是否可以只加载最后一篇博文?
我试过了
但它不喜欢这种语法。
.net - 使用 LINQ 从 Sql 加载完整图
假设我们有一个 Menu 类,它具有 SubMenus(这是相同类型的 Menu,因此也可以有 SubMenus 和 Items)和 Items(具有不同类型),我们将它们存储在两个表中(一个用于 Menus,一个用于 Items) . 有没有办法使用 LINQ to SQL 加载菜单类的完整图形(所有子菜单和项目)?
ruby-on-rails - 在内存中更新预先加载的关联
在我当前的 Rails 应用程序中,我将大量数据从数据库中提取到内存中,以便我可以启动一个长时间运行的后台任务,我不想每 5 秒访问一次数据库。
这一切都很好,但我有一些不雅的代码,如果可能的话,我想去掉它们。
例如,我有一个用户模型,并且用户模型可以以联系人的形式链接到其他用户模型,而联系人又可以链接回第一个用户模型,依此类推。建模如下(感谢 Milan Novota 早期的帮助):-
所以现在我可以输入
并获取用户 a 的所有联系人。现在假设我想通过用户 a 获取用户 b 的联系人(想不出我为什么会这样做,但这只是一个例子!)
现在我可以得到用户 a 的名字(以一种复杂的、迂回的、从未在现实世界中使用的方式)
到目前为止,一切都很好。现在我更改用户 a 的名称
如果像以前一样从数据库中再次访问用户 a 的名称,我会得到
但是,如果我渴望加载并将这个值保存在内存中,我会得到
但执行以下操作给了我正确的答案
很明显,预加载为原始用户和从 ContactRecord 对象预加载的用户创建不同的用户对象。
所以(最后!)我的问题是:-
目前,我已经通过使用来解决这个问题
(其中@users 是预先加载的用户对象列表)。有没有办法可以更新预先加载的用户对象?
请注意: -
a)我正在使用以下内容进行急切加载
b) 显然这不是我正在使用的实际代码,但为了显示该代码,会有更多的解释和说明,我想我已经让你厌烦了!相信我,我使用的真实示例确实需要这种结构才能正常工作,尽管看起来很奇怪!;)
c) 我可能在重构示例时引入了拼写错误和错误,但请忽略这些。我只需要知道是否可以在不访问数据库的情况下重新加载热切的用户。
提前谢谢了!
更新:如下所述,模型数据在流程运行结束之前不会保存到数据库中,因此重新加载将不起作用,因为数据库中的数据不会改变。
nhibernate - 使用 Fluent NHibernate 的 AutoPersistenceModel 但在单个对象中预先加载
我正在使用 Fluent NHibernate 来自动映射我的实体。
这是我用于自动映射的代码:
这工作得很好。但是现在我需要在我的域的一个对象中进行 Eager Loading。找到了这个答案。但是当我将该行添加.ForTypesThatDeriveFrom<IEagerLoading>(map => map.Not.LazyLoad())
到代码并运行它时,我得到以下异常:
- 尝试为 IEagerLoading 构建映射文档时出错
请注意,我正在使用一个接口 ( IEagerLoading
) 来标记我想要预加载的对象。
谁能帮助如何做到这一点?请记住,我想保留自动映射功能。
谢谢
ruby-on-rails - 急切加载在 Rails 2.2.2 中不起作用
我正在使用类似于以下的模型:
您可以假定 own_id 和 owner_id 位于正确的位置。问题在于,在应用程序中不同 mvc 链的控制器中,
不起作用。我自然地得到了owner_id,列,但不能这样做
是什么赋予了?我的意思是,我可以在将结果传递给视图之前直接进行分配:
但这似乎很愚蠢。来吧,让我难堪。我错过了什么明显的事情?这适用于我的应用程序的其他地方,但我无法发现差异。有一些常见的陷阱吗?任何事情都有帮助。
谢谢
ruby-on-rails - 如何使用 ActiveRecord 和 Rails 获得一个急切加载的条件,以便稍后延迟加载
首先让我展示一些代码。
好的,所以稍后在控制器中我想搜索所有员工。我设置了命名范围以帮助通过连接和条件搜索来做到这一点。但问题出在我想显示所有用户角色的视图中,但它只会显示员工角色。
无论如何我可以说“user.roles”并在我已经迫不及待地加载它之后将它延迟加载到视图中吗?
c# - LINQ to Entity Framework Many-Many Eager Loading 问题
我有以下查询:
一切正常,我得到了我的设备,它正确(急切地)加载了制造商表。但是当我尝试执行以下多对多查询时:
其中 "ContractEquipments" 是 "Equipments" 和 "Contracts" 之间的多对多查找,但是当此查询运行时,不再容易加载制造商表。知道如何在不执行以下操作的情况下解决此问题:
这个项目需要几个小时执行,我想减少数据库调用的数量。
编辑#1:
我也试过这个没有成功:
nhibernate - 使用 NHibernate 急切加载子集合
我想加载根实体并急切地加载它的所有子集合和聚合成员。
一直在尝试SetFetchMode
在 FluentNHibernate 中使用,但由于我的深度为 3 个级别,因此我在其中一个子集合中得到了重复项。DistinctRootEntityResultTransformer
不幸的是,只删除了根重复。
我可以使用多个查询或类似的东西来存档吗?
此外,这种方法不会导致数据库中不必要的巨大结果集吗?
有什么建议么?
entity-framework - 使用实体框架急切加载聚合根
我想创建一种更结构化的方法来加载所需的实体树:
我需要大量数据,所以我使用类型安全的包含(只是一个普通的包含,但使用 Lambda)来执行此操作,如此处所示。
正如我所说,我需要大量数据,基本上是一个父项下的整个实体树。
现在,我可以这样做:
如您所见,这条充满包含的行会变得非常庞大。这实际上是实际代码的一个非常简化的示例(顺便说一句,不包括房屋)
所以我想做的是创建方法,负责它在树中的分支。该方法可以接受对象查询并包含子对象,然后调用“子加载器方法”。此外,父母应该无关紧要,只要它具有与孩子的类型的属性。
这可能没有多大意义,所以:
等等。但我无法真正理解它......传入查询和调用子方法之间缺少链接。
有没有人做过这样的事情?或者有人可以给我一些指示吗?
c# - 如何正确测试 NHibernate FetchMode.Eager?
有没有办法编写集成测试来测试 FetchMode.Eager 是否正常工作?我想验证当我检索 MySubObject 时它不会进入数据库。
编码: