C# 使用nhibernate和mvc进行分页

C# 使用nhibernate和mvc进行分页,c#,asp.net-mvc,nhibernate,pagination,C#,Asp.net Mvc,Nhibernate,Pagination,我发现了使用nhibernate进行分页的非常有趣的教程 这些publicpagedlistgetpaged(intpageindex,intpagesize)query如何被重写以在没有期货的情况下使用(主要原因是我应该有其他数据库的工作版本,如firbird等) 或者,如果您有其他有趣的分页教程要分享,请这样做 谢谢您只需创建查询,而无需期货。唯一的区别是,您将有两次到数据库的往返,而不是一次。我不认为这在你的场景中是个问题 像这样的方法应该会奏效: using (ISession ses

我发现了使用nhibernate进行分页的非常有趣的教程

这些
publicpagedlistgetpaged(intpageindex,intpagesize)
query如何被重写以在没有期货的情况下使用(主要原因是我应该有其他数据库的工作版本,如firbird等)

或者,如果您有其他有趣的分页教程要分享,请这样做


谢谢

您只需创建查询,而无需
期货
。唯一的区别是,您将有两次到数据库的往返,而不是一次。我不认为这在你的场景中是个问题

像这样的方法应该会奏效:

using (ISession session = NHibernateHelper.OpenSession())
{
    var rowCount = session.CreateCriteria<PSScript>()
                        .SetProjection(Projections.RowCount())
                        .UniqueResult<Int32>();

    var results = session.CreateCriteria<PSScript>()
        .SetFirstResult((pageIndex - 1) * pageSize)
        .SetMaxResults(pageSize)
        .ToList<PSScript>();

    return new PagedList<PSScript>(results, pageSize, pageSize, rowCount);
}
使用(ISession session=NHibernateHelper.OpenSession())
{
var rowCount=session.CreateCriteria()
.SetProjection(Projections.RowCount())
.UniqueResult();
var results=session.CreateCriteria()
.SetFirstResult((页面索引-1)*页面大小)
.SetMaxResults(页面大小)
.ToList();
返回新的页面列表(结果、页面大小、页面大小、行数);
}

如果我没有提出太多要求,您能给我举一个具体的例子吗?在您的视图中,您将数据绑定到什么?如果您绑定到一个表或网格,我发现自动魔法分页在NHibernate中工作得很好。