NHibernate中的分页

如些获得分页的数据,应是NHibernate中常用的方法:
cri.SetFirstResult( 20 );
cri.SetMaxResults(
10 );
IList list 
=  cri.List();

list变量就得到某一页的数据,上面是第20页(从0计起)的数据。看了一其执行的Sql语句
NHibernate: SELECT top 30 this.ID as ID0_, this.Title as Title0_, this.[Memo] NHibernate中的分页 FROM Batch this WHERE (this.BuilderGuid = @p0 and this.IsTemp = @p1)

“top 30”,就是说查询得到的除本页数据外,还包括前面几页的数据。尝试改变一下First及Max值,最后top的记录等于First*Max;当然list只会返回给我们10条记录,这是我们要求的。这种分页方法越到后面效率越差,以后再来优化了...

你可能感兴趣的:(Hibernate)