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

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

 limit.ToString());
  }

 

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

 

 result.ToSqlString();
        }
    }

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

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

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

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

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

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

相关文章:

  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-04
  • 2021-07-08
  • 2021-09-01
  • 2022-12-23
猜你喜欢
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
  • 2021-06-22
  • 2021-09-27
相关资源
相似解决方案