NHibernate 2.0.1 下实现SQL2000真分页

最近用NHibernate做个项目 由于数据库用的是mssql2000 NHibernate 对mssql2000的分页查询支持的不是很好 于是自己动手实现一个mssql2000方言

原 NHibernate.Dialect 命名空间下的mssql2000的方言类 MsSql2000Dialect 里的 GetLimitString 方法 如下:

Code

 

看上面这段代码大家都知道这种分页方式的性能有多么的差 下面我把我自己实现的方言类代码贴出来

 

Code

这个类继承自原 NHibernate 的 mssql2000方言类 重写了 SupportsLimitOffset 属性 返回 true 让 NHibernate 支持 offset

重写了 GetLimitString 方法 使用 内存变量表的方式进行数据分页 前提是 hql 语句里必须带有主键排序字段 主键必须是 自动增长

下面介绍如何使用这个类来替换 NHibernate 下的原mssql2000方言:

    在NHibernate配置文件里的找到 <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>

    替换成 <property name="dialect">myMsSql2000Dialect类的命名空间.myMsSql2000Dialect</property>

     哪位高人有更好的实现方式的话 别忘了共享给我下

posted on 2009-03-15 18:25  unfeeling  阅读(3005)  评论(5编辑  收藏  举报