请问一下程序中我这样写可以得到正确的结果
IList<Client> results = s.CreateCriteria(typeof(Client)).SetFirstResult(startRowIndex).SetMaxResults(maximumRows).List<Client>();
可是为什么生成的SQL语句竟然还是
select * from client 而不是在数据库端分页,
还需要把数据全部取一下方言用的是:NHibernate.Dialect.SybaseASE15Dialect
谢谢了
IList<Client> results = s.CreateCriteria(typeof(Client)).SetFirstResult(startRowIndex).SetMaxResults(maximumRows).List<Client>();
可是为什么生成的SQL语句竟然还是
select * from client 而不是在数据库端分页,
还需要把数据全部取一下方言用的是:NHibernate.Dialect.SybaseASE15Dialect
谢谢了
解决方案 »
- 关于.net数据类型转换的问题
- 窗体背景如何通过一个路径指向一个图片文件。Form2.BackgroundImage = "d:\xpp.bmp"这个语句错在哪里?(因不准备使用资源文件来处理)
- 关于双面打印问题,无法双面打印.
- 为什么我没有定义构造函数也没报错,正常执行了~~
- 怎样实时监视文件被谁访问过?急!!!
- 关于服务端可以接受多个客户端的连接,进行互相通信的问题.
- 关于TreeView无法正确显示的问题,在线加分
- 请教:winform 字幕显示问题,如何实现不换行效果???
- 呵呵 给个建议
- VB,VC能做的东西C#都能做吗?
- C# 生成Excel如何设置列的数据类型?
- WCF 怪异的链接问题
maximumRows
看下这两个的值是否正确
create proc PageNum
@PageSize int, --每页显示条数
@PageIndex int, --当前是第几页
@totalRows int output, --总行数
@totalPages int output --总页数
as
declare @startId int
declare @endId int
set @startId = @PageSize*(@PageIndex-1)+1
set @endId = @startId+@PageSize-1
select @totalRows=COUNT(*) from Books
set @totalPages=@totalRows/@PageSize
if(@totalRows%@PageSize != 0) --如果总行数除每页显示数据量的值不等于0,则总页数得加1
begin
set @totalPages=@totalPages+1
end
declare @IndexTable table(Id int identity(1,1) ,nId int)
insert into @IndexTable select Id from Books
select * from @IndexTable as t ,Books as b where t.Id>=@startId and t.Id<=@endId and t.nId=b.Id
go
declare @tr int --总行数
declare @tp int --总页数
exec PageNum 4,2,@tr output ,@tp output
print '这是总页数'+convert(varchar,@tp) --数据转换
print @tr
LIMIT and TOP command are not supported by Sybase version < 15
https://hibernate.onjira.com/browse/HHH-2454
我们用的是 12.5 所以 nhibernate 就直接生成的 select * from table