我試圖在我的項目中實現分頁。NHibernate IQueryOver.ToRowCountQuery()相當於使用HQL時IQuery
當使用如下所示的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 < int>()」,可以在查詢傳遞IQueryOver的IQuery insead以提供行數時使用。
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);
}
這是越野車。 http://stackoverflow.com/questions/8012966/torowcountquery-seems-to-ignore-groupings –