【发布时间】:2011-10-12 00:14:07
【问题描述】:
我正在尝试在我的项目中实现分页。
当使用如下所示的 NHibernate 的 IQueryOver 语法时,一切都按预期工作。
public PagedResult<T> ExecutePagedQuery(IQueryOver<T,T> query)
{
SetPaging(query);
var results = query.Future<T>();
var count = query.ToRowCountQuery().FutureValue<int>();
return new PagedResult<T>()
{
TotalItemCount = count.Value,
PageOfResults = results.ToList()
};
}
protected virtual void SetPaging(IQueryOver<T, T> query)
{
var maxResults = PageSize;
var numberToSkip = (PageNumber - 1) * PageSize;
query.Skip(numberToSkip).Take(maxResults);
}
对于某些查询,我们使用 HQL 而不是 IQueryOver 语法。
我想知道是否有等效于“query.ToRowCountQuery().FutureValue()”的等效项,可在通过 IQueryOver 的 IQuery 以提供行数时进行查询。
public PagedResult<T> ExecutePagedQuery(IQuery query)
{
SetPaging(query);
var results = query.Future<T>();
var count = // ToRowCountQueryEquivalent?
return new PagedResult<T>()
{
TotalItemCount = count,
PageOfResults = results.ToList()
};
}
protected virtual void SetPaging(IQuery query)
{
var maxResults = PageSize;
var numberToSkip = (PageNumber - 1) * PageSize;
query.SetFirstResult(numberToSkip);
query.SetMaxResults(maxResults);
}
【问题讨论】:
标签: nhibernate hql paging