问题标签 [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.
ruby-on-rails - Memcached 作为 Rails 中的对象存储
我将 Memcached 用作我的 Rails 应用程序的对象存储,我在其中存储搜索结果,这些结果是 memcached 中的用户对象
现在,当我取出数据时,我得到了 Memcached 未定义的类/模块错误。我在这个博客中找到了这个问题的解决方案
http://www.philsergi.com/2007/06/rails-memcached-undefinded-classmodule.html
建议事先预先加载模型。我想知道这个问题是否有更优雅的解决方案,以及使用预加载技术是否有任何缺点。
提前致谢
nhibernate - Nhibernate - 分页和急切加载实体
我有两个实体,一个团队和一个员工。
我想要一份拥有热切的团队的员工名单。该列表必须分页。
为什么这不起作用?
SQL 结果:
linq-to-entities - EF4/Linq Eager Loading with Include 无法填充所有结果
我正在尝试将 EF4 作为 .Net 4.0 WCF 服务的一部分。该服务的目的是将文档数据作为实体对象数组返回给我们的任何 ASP.Net 应用程序。这些应用程序仍在 .Net 2.0 中。由于解决方案的性质,我在上下文级别禁用了 LazyLoading。我从这个开始:
一切正常,我收到正确数量的填充对象。但是,当我在查询中添加一个 Include 以允许我们从具有定义导航的相关表中提取字段时,只有第一条记录会完全填充到调用应用程序中:
该数组的大小正确,但第一个元素之后的所有元素都是空白的默认占位符。就像使用 Include 已经恢复到 LazyLoading 一样,我似乎无法将它踢到线上。还有其他人有这个问题吗?
.net - 无法使 EF4 急切加载子类实体工作
我的 EF4 模型中有一个抽象的内容实体,它带有一个具体的子类 MultipleChoiceItem。在 MultipleChoiceItem 的情况下,有一个相关的表,该表由 MultipleChoiceItem 实体上的 Navigation 属性访问,称为 Options。我想预先加载选项结果,因为如果你得到一个 MultipleChoiceItem,你总是想要选项。但是,我似乎无法让它发挥作用。这是我基本完成的:
MultipleChoiceItem 是一个子类,因此默认情况下它没有创建元数据。所以,我为它创建了一个元数据类,看起来像这样:
/li>然后,我在 ContentService 中创建了一个新查询,如下所示:
/li>
在单元测试中,我这样称呼它:
一旦我进入 CompletedHandler,下面的代码似乎没有加载 Options 属性——事实上,当它应该是 4 时,Options.Count == 0(通过检查底层数据存储来验证)。
谁能告诉我我做错了什么?我试图按照我看过的模型发布,但显然遗漏了一些东西......
谢谢!
.net - 实体框架 - 急切加载相关实体
我将 Entity Framework 4 与 MVC 一起使用,并且需要确保在控制器方法返回之前我想在视图中使用的任何引用实体都已加载,否则视图会吐出可怕的内容:
ObjectContext 实例已被释放,不能再用于需要连接的操作。
当直接从上下文中选择时,我可以使用该Include(string)
方法强制它们包含在生成的 SQL 查询中:
但是,如果我有(例如)一个接受实体并需要加载所有项目的辅助方法,则没有Include
可用的方法。
蛮力方法是遍历它们:
如果我有 100 条建议,这将在幕后创建 101 个 SQL 查询。理想情况下,我想要一种方法/方法,只需一次访问 SQL 即可加载所有Recommendation
AND对象。User
把钱拿出来。
编辑我对讨论这是一个好还是坏的架构并不是很感兴趣。为了这个问题,我已经简化了我的场景。你能用 EF API 做我要求的事情吗?
编辑 2
拉迪斯拉夫的编辑提供了一种新方法的希望,但似乎我并不完全在那里。
我可以通过这个实现我想要的:
这种方法不适用于LoadProperty
...
...因为它因错误而失败...
找不到指定的导航属性 Recommendations.User。
如果您没有对上下文的引用,这些方法都不起作用。
hibernate - groovy / grails / hibernate - 配置设置为急切地获取
我们正在使用域类使用 grails 配置休眠。添加:
但是,当我拉出对象图时,不会加载每个图像。请指教。
谢谢。
nhibernate - 我可以使用 HQL 急切加载属性吗?
我正在尝试解决如何在以下 HQL 查询中急切加载客户:
订单和客户之间通常存在多对一的关系。
如果可能的话,我想在查询中执行此操作,而不是在映射中 - 如在“join fetch ...”中
也许查询会被重构为一个连接,我有一个心理障碍。
有任何想法吗?
entity-framework - EF: Lazy loading, eager loading, and "enumerating the enumerable"
I find I'm confused about lazy loading, etc.
First, are these two statements equivalent:
In other words, in (1) the "Includes" cause the navigation collections/properties to be loaded along with the specific collection requested, regardless of the fact that you are using lazy loading ... right?
And in (2), the statement will load all the navigation entities even though you do not specifically request them, because you are using eager loading ... right?
Second: even if you are using eager loading, the data will not actually be downloaded from the database until you "enumerate the enumerable", as in the following code:
The data will not actually be downloaded ("enumerated") until the foreach loop ... right? In other words, the "var dates" line defines the query, but the query is not executed until the foreach loop.
Given that (if my assumptions are correct), what's the real difference between eager loading and lazy loading?? It seems that in either case, the data does not appear until the enumeration. Am I missing something?
(My specific experience is with code-first, POCO development, by the way ... though the questions may apply more generally.)
linq-to-sql - 使用没有连接的 Linq-to-SQL 预加载
像许多人一样,我试图从我的应用程序中获得最佳性能,同时保持代码尽可能简单和可读。我正在使用 Linq-to-SQL,并且我真的试图让我的数据层尽可能地具有声明性。
我假设 SQL 调用是最昂贵的操作。因此,我尽量减少它们的数量,但尽量避免难以优化的疯狂复杂查询。
恰当的例子:我将DataLoadOptions与我的 DataContext 一起使用——它的目标是通过预加载相关实体来最小化查询的数量。(又名,急切加载与延迟加载。)
问题:Linq 使用连接来实现目标。与所有事情一样,这是一种权衡。我得到的查询越来越少,但那些加入的查询更加复杂和昂贵。进入 SQL Profiler 可以清楚地说明这一点。
所以,我想在 Linq 中有一个选项可以在没有 joins 的情况下预加载。这可能吗?下面是它的样子:
我有一张Persons
桌子,一张Items
桌子,一张PersonItems
桌子来提供多对多的关系。加载人员集合时,我希望也急切地加载他们所有的 PersonItems 和 Items。
Linq 当前使用一个包含两个连接的大型查询来执行此操作。我宁愿它做的是三个非连接查询:一个用于 Persons,一个用于与这些 Persons 相关的所有 PersonItems,一个用于与这些 PersonItems 相关的所有 Items。然后 Linq 会自动将它们排列到相关实体中。
其中的每一个都是快速的、firehose 类型的查询。从长远来看,它将允许可预测的网络规模性能。
见过做过吗?
ruby-on-rails - 可以急切地加载与nested_attributes 的关联吗?
简而言之,我遇到了一个可怕的 2(n) 查询问题。如果 n = 数据库中的技能数量,那么我的 characters#edit 表单将需要 2(n) 次查询来加载页面。它会在每个技能中选择一个 PlayerSkill(连接表),并且每个技能都会查找一次技能。
这是一些我认为与情况相关的代码。本质上,这个过程涉及的模型、视图和控制器,少了模型验证,少了我不关心的动作。
控制器:
型号:
令人反感的观点(HAML):
我对这种情况的理解是,急切加载的存在是为了在(大致)一个额外的查询中获取关联。
我需要在两个区域正确应用急切加载,而我对如何做到这一点不知所措。
在 stub_player_skills 方法中,它需要创建一个 PlayerSkill 对象,假设角色还没有一个。 它可以从这里的预加载中受益,因为它循环遍历数据库中的每个技能。这就是第一个“n 查询”的来源。
然后在视图上,fields_for 循环遍历我们积累的所有 PlayerSkills,因为这里没有办法预先加载,当我调用 =ps.object.skill.name 打印出技能名称时,它会进行技能查找,这带来了第二组“n 查询”。
我主要关心的是视图层,我找不到任何文档(Rails API 或其他)说明如果您使用 fields_for 生成嵌套表单,您可以如何急切地加载关联。
感谢您的所有回复:) ~Robbie