在NHibernate中进行分页查询可以使用Criteria API或者HQL(Hibernate Query Language)。以下是使用Criteria API进行分页查询的示例代码:
using NHibernate;
using NHibernate.Criterion;
public IList<Product> GetProducts(int pageIndex, int pageSize)
{
using (ISession session = sessionFactory.OpenSession())
{
ICriteria criteria = session.CreateCriteria<Product>();
// 设置分页参数
criteria.SetFirstResult((pageIndex - 1) * pageSize);
criteria.SetMaxResults(pageSize);
return criteria.List<Product>();
}
}
在上面的示例代码中,首先创建一个Criteria对象,然后通过调用SetFirstResult和SetMaxResults方法设置分页参数,最后调用List方法获取结果集。
另外,也可以使用HQL进行分页查询,示例代码如下:
using NHibernate;
using NHibernate.Linq;
public IList<Product> GetProducts(int pageIndex, int pageSize)
{
using (ISession session = sessionFactory.OpenSession())
{
string hql = "FROM Product";
IQuery query = session.CreateQuery(hql);
// 设置分页参数
query.SetFirstResult((pageIndex - 1) * pageSize);
query.SetMaxResults(pageSize);
return query.List<Product>();
}
}
在这个示例中,首先创建一个HQL查询对象,然后通过调用SetFirstResult和SetMaxResults方法设置分页参数,最后调用List方法获取结果集。
无论是使用Criteria API还是HQL,都可以实现在NHibernate中进行分页查询。