问题标签 [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.
nhibernate - NHibernate 查询 - 多对多 - 急切加载(推特风格的追随者/关注者)
我一直在优化我的一个查询......这是我的场景......
我有一个类似于 Twitter 的域,用户可以在其中关注其他用户。所以这是我的用户模型的示例:
我现在需要返回关注用户“XYZ”的用户的分页结果,但还需要确定当前登录的用户是否关注返回的关注者所需的加载数据。
所以不知何故我需要急切地加载这个:(user->followers->following
也许使用过滤器来获取following
当前用户的数据)
这甚至可以在 1 个查询中完成,还是我需要执行 2 个单独的查询?1 个查询返回关注者的分页数据,然后另一个查询指定带有返回 ID 的 IN 子句以获取登录用户的以下数据。
保罗
sqlalchemy - SQLAlchemy 只加载集合,在 eagerloading 时不加载 backref
例如(eagerload/joinedload 做同样的事情):
在关闭会话之前添加以下循环有效(并且不会命中数据库):
这很愚蠢。有没有办法改变原始查询,以便它加载关系的双方而不在输出 SQL 中添加更多连接?
更新如果它是相关的;这是映射
c# - 在 Linq to Entities 中将条件应用于急切加载(包含)请求
我有一个表产品。Product 以一对多的关系与 ProductDescription 相关。每个产品的 ProductDescription 可以有不止一行。如果产品描述有多个翻译,它将有多个行。产品与语言是多对一的关系。Language 有一个语言代码(en、es 等)以及一个 LanguageId(也可以在 ProductDescription 中找到)。
我想让我的用户能够请求产品并进一步告诉应用程序只返回特定语言的描述。
我有一段时间在 Linq to Entities 中完成这项工作。我想生成这样的 SQL:
(AlternateCode 是语言代码的字段名称)
有谁知道如何做到这一点?我现在剩下的就是拉下所有语言,然后用 Linq to Objects 过滤掉它们,这肯定不太理想。我可以在循环中获取每个产品的语言代码,但这需要多次 SQL 往返,我也不想要。
感谢任何帮助!
c# - 在 Linq 中对实体进行 Eager Loading 和 Projection
这是我几天前发布的另一个问题的衍生,该问题已成功回答,但它确实没有涉及我遇到的潜在问题,但无法在我的原始查询中完全表达。
我有一个表产品。Product 以一对多的关系与 ProductDescription 相关。每个产品的 ProductDescription 可以有不止一行。如果产品描述有多个翻译,它将有多个行。产品与语言是多对一的关系。Language 有一个语言代码(en、es 等)以及一个 LanguageId(也可以在 ProductDescription 中找到)。
我想让我的用户能够请求产品并进一步告诉应用程序只返回特定语言的产品描述。
我遇到的问题是我知道我需要使用投影来完成这个问题的第 3 段中的任务。像这样的东西:
但是,除了语言部分之外,我在 Products 表中还有 4 个 Products 的其他子表需要为结果集加载大约 15 个属性。有什么方法可以让我进行急切加载和投影,这样我就不必手动映射所有这些属性和子对象?这是我的代码现在所在的位置:
不需要选择,这真的很好。一旦我将 ProductDescriptions 更改为投影,我就会添加一个 Select,然后我不会免费填充任何其他属性/子项。
c# - 禁用所有延迟加载或强制预先加载 LINQ 上下文
我有一个文档生成器,目前包含对大约 200 个项目的查询,但完成后可能会超过 500 个。我最近注意到一些映射表示延迟加载。这给文档生成器带来了一个问题,因为它需要根据正在生成的文档访问所有这些属性。
虽然我知道DataLoadOptions
可以为上下文指定 ,但这将导致我必须明确指定可能加载的每一列。那是 1000 以北,因为它所有的数据获取都发生在一个上下文中。
我有什么方法可以禁用上下文的延迟加载或显式启用急切加载以忽略延迟加载属性?也许扩展数据库上下文类并覆盖某些东西?
linq-to-sql - 在 Linq2Sql 中急切加载实体
我正在尝试使用 LoadWith 和 AssociateWith DataLoadOptions 急切地加载实体及其相关属性(基本的一对多)。但是,在查看生成的 SQL 之后,我注意到 LoadWith 生成的语句都是左外连接。
所以下面的代码生成所有左外连接来获取相关属性的数据。这是为什么?有没有办法让 LoadWith 生成内部连接。我知道我可以通过一个简单的“Linq join”来做到这一点,但是,我喜欢 LoadWith 语法的简洁明了。提前致谢
nhibernate - NHibernate - 动态定义获取策略
让我解释一下这个问题——希望我已经在标题中很好地定义了它,但我想确定一下。
我有一个 linq 查询,可以拉回一堆对象(比如 Foos)。每个 Foo 都包含一个对 User 的引用。每个用户都持有一个人的引用:
正如对象结构所暗示的那样,在数据库中,Foo 将多对一关联到 User,而 User 将多对一关联到 Person。
当我运行查询时,我为 Foos 获得一个 SELECT,然后为所有用户和人员分别获得一个 SELECT。显然,我更喜欢带有几个连接的单个 SELECT。
我不一定要在我的映射配置中指定 Foos 总是渴望获取用户,或者用户总是渴望获取人,但我希望能够在这种情况下指定。
有没有办法做到这一点?
谢谢
大卫
ruby-on-rails - 急切加载嵌套模型的问题
我有一些模型 - NewsArticle、Comment、User (as:author) 和 Profile。
正如你所看到的 - 我有 default_scope 用于评论以渴望加载作者的个人资料,但不幸的是它不起作用:(我也尝试使用更新 NewsArticleController
但没有任何改变:(
在渲染带有评论的 NewsArticle 时,我看到数据库的负载很疯狂。你能帮我优化一下吗?
PS:视图如下
news_articles/show.html.haml
news_articles/_comment.html.haml
PPS:伙计们,对不起-我忘记告诉您模型用户和配置文件位于另一个数据库中,可以通过以下方式访问
目前 - 很清楚为什么包含/加入不起作用,但也许您知道如何使用帐户数据优化对数据库的请求?
nhibernate - 绑定急切获取的集合
我怎样才能急切地获取一个集合,但只获取前 N 个项目?
使用此代码有效,但是否有“官方方式”来实现这一目标?
在这种情况下,我限制 的结果Gallery
,这无论如何都是唯一的结果,但我想限制 的结果Pictures
。
entity-framework - 实体框架 - 使用包含/急切加载和延迟加载有什么区别?
我一直在尝试熟悉实体框架。大部分看起来很简单,但我对使用 Include 方法的急切加载和默认的延迟加载之间的区别有点困惑。两者似乎都加载了相关的实体,所以从表面上看,它们似乎在做同样的事情。我错过了什么?