NHibernate:返回具有分页子集合的对象的最简单方法?

2023-12-21

我想返回一个父对象,其中子集合急切地加载了所请求的子对象页面(子集)。实现这一目标的最佳方法是什么?过滤器?可以使用 ICriteria 查询吗?

我正在使用 .SetFirstResult() 和 .SetMaxResults() 对聚合根结果的集合进行分页,但是是否可以在聚合根中使用它来选择子结果的页面?

沿着这些思路:

public class Parent{
int Id;
IList<Child> Children;
}


public Parent GetWithPagedChildren(int id, int page, int pageSize, out int count)
{
    //Query

    return Parentresult; //With one page of children populated.
}

UPDATE:

事实上,急切加载的需求并不那么重要。我只想在访问子对象时加载子对象的分页子集。


您不能在同一查询中对子集合进行分页和连接获取。但是你可以:

  • 使用查询来获取(分页的)父级,并使用一个查询来加载这些父级的所有集合(阅读http://ayende.com/Blog/archive/2010/01/16/eagerly-loading-entity-associations-efficiently-with-nhibernate.aspx http://ayende.com/Blog/archive/2010/01/16/eagerly-loading-entity-associations-efficiently-with-nhibernate.aspx对于某些概念)
  • Set batch-size在集合上适应您的页面大小。这或多或少会自动完成相同的任务。甚至还有一个补丁可以动态更改此设置:https://nhibernate.jira.com/browse/NH-2316 https://nhibernate.jira.com/browse/NH-2316

Update(针对新要求):

正如您所阅读的,您可以使用session.CreateFilter过滤/排序/分页子集合。这是可行的,并且到处都支持它。

此外,还有一个补丁(NH-2319 https://nhibernate.jira.com/browse/NH-2319;我将转换为允许使用 Linq 的插件,因为它不太可能在主干中被接受。它仅限于某些集合类型,并且要求关系是双向的,但允许以下内容:

var parent = GetParent();
var secondPageOfChildrenByName = parent.Children.AsQueryable()
                                                .OrderBy(c => c.Name)
                                                .Skip(PageSize * 1)
                                                .Take(PageSize)
                                                .ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate:返回具有分页子集合的对象的最简单方法? 的相关文章

  • 如何对很多很多页面进行页面导航?对数页面导航

    显示许多页面的页面导航的最佳方式是什么 最初这是作为操作提示发布的 我的答案包含在问题中 我现 在将我的答案分成下面的 答案 部分 更具体 假设您要向用户显示一组记录 这些记录分为固定大小的页面 例如 Google 搜索的结果 如果只有几个
  • 多列多对一

    我有一个遗留数据库和两个表之间一对一的关系 问题是关系使用两列 而不是一列 在 nhibernate 中是否有某种方法可以说 当获取引用的实体时 它在 join 语句中使用了两列 而不是一列 我有一个类似的表结构 任务进度 进度ID Tas
  • 每个会话的 Nhibernate 会话示例

    您好 nhibernate 的一些专业人士能给我每个会话的 Nhibernate 会话实现示例还是 unhaddins 实现吗 或者解释如何做到这一点 此致 恩迪斯 我使用 NHibernate 工作了 4 年 此前我曾与 每次操作打开会话
  • 如何在使用 NHibernate 进行任何插入之前增加 ID

    看起来NH只获取一次MAX ID 第一次插入然后在内部存储这个值 这会在其他进程插入数据时给我带来一些问题 然后我没有实际的 ID 并且抛出重复键异常 假设我们有桌子Cats CREATE TABLE Cats ID int Name va
  • 将 MyGeneration 与 Fluent NHibernate 结合使用

    我在这里找到了一个使用 MyGeneration 生成 NHibernate 代码的绝佳模板 http vucetica blogspot com 2009 01 nhibernate template for my Generation
  • Gridview 中的分页不起作用第二页数据未显示数据?

    我的网格视图 div style margin left 100px div
  • 如何将 NHibernate 和 DTO 与 RIA 服务结合使用

    我将 NHibernate 与 RIA 服务和 Silverlight 4 一起使用 我创建 DTO 来通过 RIA 服务传输数据 而不是分发我的域层对象 根据 Martin Fowler 的分布式对象设计第一定律 不要分发您的对象 DTO
  • Fluent NHibernate 一对一映射

    我很难利用 Fluent NHibernate 的 HasOne 映射 基本上 A 类在 B 类中可以有匹配的 只有一条或没有 记录 请帮助定义关系的 AMap 和 BMap 类 谢谢 public class A public virtu
  • 如何在 NHibernate 中自动生成 ID

    如何让 NHibernate 自动生成表的唯一 ID ID 可以是任意的long值 只要每个值仅使用一次 我当前的映射如下所示
  • 流畅的 NHibernate 和 XML 列

    我正在从头开始构建一个新站点 并正在考虑使用 Fluent NHibernate 作为我的 ORM 我认为它可以轻松处理所有事情 可能除了我的 XML 列 我从来没有使用 NHibernate 构建过网站 尽管我使用过 Hibernate
  • 如何保持长时间运行的NHibernate Session数据一致?

    我在 ASP NET 会话中缓存了 NHibernate 会话 我遇到过一种情况 用户编辑了一个对象 因此它位于 ISession 的第一级缓存中 然后另一个用户编辑了同一个对象 此时 用户 1 仍然可以看到其编辑的原始版本 而用户 2 可
  • nHibernate + wcf + Isession

    我有一个包含 3 个项目的 C 解决方案 数据 WCF 和 UI 第一个是与数据库对话的类库 它通过第二个项目公开 该项目的类型为 WCF 服务库 原因是它将在第三个项目 称为 UI 的 Asp net 应用程序 作为指向 dll 的简单
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 如何判断一个引用的对象是否可以删除?

    我有一个名为 Customer 的对象 它将在其他表中用作外键 问题是我想知道是否可以删除 客户 即 它没有在任何其他表中引用 Nhibernate 可以做到这一点吗 你所要求的是找到的存在CustomerPK值在引用表FK列中 有很多方法
  • nHibernate 3 - Left Join re-Linq 解决方案

    我正在尝试使用 nHibernate 3 运行下面的 Linq 查询 var items from c in session Query
  • NHibernate HQL 相当于 T-SQL 的 TOP 关键字

    NHibernate HQL 相当于 T SQL 的 TOP 关键字是什么 另外 用非 HQL 方式说 给我一门课的前 15 个 是什么意思 在 HQL 中这实际上非常简单 var top15 session CreateQuery fro
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity
  • NHibernate Hi/Lo - id 中的间隙

    场景 Hi Lo 初始化为MyEntity与 Lo 100 桌子是空的 具有不同连接的两个会话都插入了三个项目 TableIds 1 2 3 100 101 102 如果稍后有第三个进来并插入三项 TableIds 200 201 202
  • NHibernate 3.2 通过代码(Conformist)字典属性的类映射

    假设我有一个类 So meClass 它有一个查找字典 数据字典 我目前在 SomeClass hbm xml 中有一个映射 如下所示
  • 一次调用多个结果

    分页数据时 我不仅想返回10条结果 还想获取所有页面中的项目总数 如何在一次调用中获取页面的总计数和结果 我的分页方法是 公共IList GetByCategoryId intcategoryId intfirstResult intmax

随机推荐

  • 如何让 Gitlab 6.5 在 Apache 2.4 代理下显示其图标?

    我无法修复由 Apache 2 4 代理的 Gitlab 上的图标 我的失败可能是因为我没有使用乘客 乘客提供了自己的一系列更深层次的问题 但我采取了在代理下运行它的所有步骤 gitlab 我也跑了 sudo u git H bundle
  • 如何重写 CursorAdapterbindView

    我正在尝试显示来自Cursor in a ListView 每行包含一个ImageView and a TextView 我有一个CustomCursorAdapter延伸CursorAdapter in bindView我评估来自光标的数
  • 数据仓库 - 具有多对多关系的缓慢变化的维度

    举个例子 假设我有一个包含两个维度和一个度量的事实表 事实货币表 项目密钥 int PersonKey 整数 现金金额 两个维度的定义如下 DimProject 0 型维度 即静态 项目密钥 int 项目名称 varchar 50 DimP
  • Glide 预加载不保存在缓存中

    我想在向用户显示图像之前预加载图像 我有一个 ViewPager 其中每个页面都是一张图像 当活动开始时 它会调用 Glide with this load uri preload 之后 所有图像都被预加载 理论上 为了测试预加载是否有效
  • 编写一个简单的语法解析器

    这就是我想做的 在 Php 中 给定一个字符串 得到如下结果 a b c a 是一个返回 true 或 false 的函数 这应该给b or c打电话后a a b d e c 同样的原则 最终结果应该是d e or c a b d e c
  • 本地模拟器分布式计数器扩展的实现

    firebase 扩展分布式计数器 https firebase google com products extensions firebase firestore counter可以直接安装到云端并且运行良好 要为应用程序开发新功能 我需
  • 更改 netCDF 文件的网格大小

    假设我有 2 个 netCDF 数据文件 其中包含同一区域 如南美洲 非洲等 的数据 但网格大小不同 另一个网格大小为 0 5 度 x 0 5 度 另一个网格大小为 1 0 度 x 1 0 度 我想将其网格大小增加或减少到不同的值 例如 0
  • Android 7.1.1 上的 DatagramSocket 问题

    我在 Android 7 1 1 N MR1 的 QA Google Pixel 上遇到了一个非常奇怪的问题 在建立TCP连接时 我们使用UDP Server和Client进行握手 QA 报告与 Pixel 的握手不起作用 在探索 Logc
  • CSS 中应该使用什么引号? [复制]

    这个问题在这里已经有答案了 可能的重复 我们应该在 css 背景 url 中使用哪种类型的引号 需要单引号 双引号还是不需要引号 https stackoverflow com questions 2034575 which type of
  • 我应该将公钥存储在哪里?

    我的 Web 应用程序有一个持续运行的服务来将报告发送到 ftp 服务器 该文件需要使用公钥进行加密 因此我的问题是我应该在哪里存储公钥 我只有一个公钥 所以使用高级密钥库似乎有点矫枉过正 我应该在服务器上手动创建一个文件夹并将其存储在其中
  • 使用 ASP.NET 请求用户获取 Log4net 日志条目

    我的 ASP NET 站点正在使用集成身份验证并关闭模拟 我已将 username 添加到 web config 中的 conversionPattern 中 以将用户名添加到每个日志记录条目中 但是 这将使用应用程序池标识的用户名 而不是
  • Vim 编辑器 - zsh shell ipython magic %ed 找不到编辑器

    我正在尝试使用 IPython 中的 ed 魔法来使用 vim 作为编辑器 vim 已安装 ipython 和 ipython qtconsole 都可以工作 zsh 是最新的 与我的 oh my zsh 安装一起更新 我将我的偏好导出到
  • MS Access 交叉表查询参数

    有没有办法像选择查询一样在查询中引用表单的组合 文本框 我通常在选择查询的条件中使用类似的内容 like forms frmMain qTitleofSomething access adds the brackets for me 但这在
  • 拦截org.springframework.cache.interceptor.CacheInterceptor#invoke的spring aop

    我已经尝试过以下代码 但它不起作用 Component Aspect Order Integer MAX VALUE public class CacheAspect Around execution public org springfr
  • Angular4 中 onScroll 事件触发函数

    我正在尝试显示分页列表 因此 当用户向下滚动时 我想触发一个加载更多项目的函数 但我无法在 滚动 事件上调用该函数 我的 HTML 文档如下所示 div div class row notification row div div 在我的
  • 如何使用libxml2生成XML文件?

    我已经从 xmlsoft org 下载了 libxml2 我用它来解析 xml 文件 现在我想使用相同的 libxml 创建我自己的 xml 文件 如下所示
  • 无法从“App.js”解析“@react-navigation/native” - React Native + 如何解决?

    未定义 无法解析模块 react navigation native from App js 在项目中找不到 react navigation native 如果您确定该模块存在 请尝试以下步骤 1 Clear watchman watch
  • 如何在 TensorFlow v1.9 中下载 MNIST?

    我正在学习 TensorFlow 教程 我已经在python 3 6中安装了Tensorflow r1 9 我有以下导入 from tensorflow examples tutorials mnist import input data
  • Laravel 使用 storage fake 进行测试

    我开发了一个功能来下载基于数据库生成的CSV文件 我已经为此创建了测试并且对我来说工作得很好 但问题是完成测试运行后文件没有被删除 Question 测试完全运行后 使用 storage fake 创建的文件会自动删除吗 如果是的话 它不会
  • NHibernate:返回具有分页子集合的对象的最简单方法?

    我想返回一个父对象 其中子集合急切地加载了所请求的子对象页面 子集 实现这一目标的最佳方法是什么 过滤器 可以使用 ICriteria 查询吗 我正在使用 SetFirstResult 和 SetMaxResults 对聚合根结果的集合进行