如何在nHibernate中限制映射集合的结果集?例如:
Model.Items;
将始终返回给定模型的所有项目。有没有办法强制它只返回20个项而不创建特定查询?像
这样的东西Model.Items.SetMaxResults(20);
换句话说,当我访问集合时,我希望nHibernate返回IQueryable而不是简单的IList。
更新。虽然我接受了答案,但我想指出这与nHibernate的预期使用方式不一致,并且子集合应该加载并限制在单独的内容中查询。
答案 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)