最近用NHibernate做个项目 由于数据库用的是mssql2000 NHibernate 对mssql2000的分页查询支持的不是很好 于是自己动手实现一个mssql2000方言
原 NHibernate.Dialect 命名空间下的mssql2000的方言类 MsSql2000Dialect 里的 GetLimitString 方法 如下:
}
看上面这段代码大家都知道这种分页方式的性能有多么的差 下面我把我自己实现的方言类代码贴出来
}
}
这个类继承自原 NHibernate 的 mssql2000方言类 重写了 SupportsLimitOffset 属性 返回 true 让 NHibernate 支持 offset
重写了 GetLimitString 方法 使用 内存变量表的方式进行数据分页 前提是 hql 语句里必须带有主键排序字段 主键必须是 自动增长
下面介绍如何使用这个类来替换 NHibernate 下的原mssql2000方言:
在NHibernate配置文件里的找到 <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
替换成 <property name="dialect">myMsSql2000Dialect类的命名空间.myMsSql2000Dialect</property>
哪位高人有更好的实现方式的话 别忘了共享给我下