nHibernate:限制映射集合的结果集

时间:2010-03-07 11:02:26

标签: nhibernate

如何在nHibernate中限制映射集合的结果集?例如:

Model.Items;

将始终返回给定模型的所有项目。有没有办法强制它只返回20个项而不创建特定查询?像

这样的东西
Model.Items.SetMaxResults(20); 

换句话说,当我访问集合时,我希望nHibernate返回IQueryable而不是简单的IList。

更新。虽然我接受了答案,但我想指出这与nHibernate的预期使用方式不一致,并且子集合应该加载并限制在单独的内容中查询。

3 个答案:

答案 0 :(得分:1)

.SetProjection(Projections.Property( “项目”)) .SetMaxResults(20)

答案 1 :(得分:1)

您可以使用过滤器完成您想要的任务:

IQuery q = nhSession.CreateFilter(Parent.ChildCollection, "select count(*)");
long countResult = q.UniqueResult<long>();

当您在IQuery中看到过滤器时,您不仅限于我刚才给出的“选择计数”范例。 此外,此解决方案需要映射正常集合,以便您可以以多种方式使用它。

答案 2 :(得分:0)

是的,您可以使用<loader />映射元素指定将加载集合的查询。可以找到更多信息herehere