gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:22:33 25 4
gpt4 key购买 nike

我想返回一个父对象,其中的子集合急切地加载了所请求的子对象页面(子集)。实现这一目标的最佳方法是什么?过滤器?可以使用 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.
}
<小时/>

更新:

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

最佳答案

您无法在同一查询中对子集合进行分页和连接提取。但你可以:

更新(针对新要求):

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

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

var parent = GetParent();
var secondPageOfChildrenByName = parent.Children.AsQueryable()
.OrderBy(c => c.Name)
.Skip(PageSize * 1)
.Take(PageSize)
.ToList();

关于NHibernate:返回具有分页子集合的对象的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com