zoukankan      html  css  js  c++  java
  • 吉日嘎拉DotNet.BusinessV4.2中的一处bug,及我的修复和扩展

    bug所在位置:DotNet.BusinessUtilitiesBaseManager.GetDataTableByPage.cs的函数

    public virtual DataTable GetDataTableByPage(out int recordCount, int pageIndex = 0, int pageSize = 20, string sortExpression = null, string sortDire = null, string tableName = null, string conditional = null, IDbDataParameter[] dbParameters = null, string selectField = null)中。当使用自己定义的查询语句作为tableName传递进来的时候,按照逻辑没有使用存储过程进行分页,但是很明显那个传递的conditional和dbParameters都被用来统计了总记录数,但是以下调用语句并没有传递conditional。

    return DbLogic.GetDataTableByPage(DbHelper, recordCount, pageIndex, pageSize, tableName, dbParameters, sortExpression, sortDire);

    于是我扩展了那个DotNet.BusinessUtilitiesExtendDbLogic.GetDataTableByPage.Extend.cs,增加了函数

    public static DataTable GetDataTableByPage(IDbHelper dbHelper, int recordCount, int pageIndex, int pageSize, string sqlQuery, string conditional, IDbDataParameter[] dbParameters, string sortExpression = null, string sortDire = null)

    这里的逻辑是,多表查询构造一个viewTable,然后将where查询直接传递到viewTable里面,而不受分页的影响。上个月扩展了此函数,今天正式升级服务器程序的时候,还是出现了问题,于是有了以上函数的完善版本。上个月是将where条件放在了最外面,造成ROW_NUMBER范围内的所有记录都没有指定where条件的记录,造成用户看记录的时候明明有,显示不出来。当然,这个扩展的函数仅仅是扩展了MSSQL的数据库,有类似使用的朋友可以参考。

    专注、持续、微创新 站在巨人的肩膀上 方向不对,努力白费
  • 相关阅读:
    ES5 创建构造函数的私有属性
    js 触发打印操作
    创建 React 项目
    处理因使用 BigInt 等最新语法时 ts 编译报错
    TS 查找第三方声明文件
    Git 撤销工作区中的变动
    Git 查看文件修改状态
    Git 查看用户名和 Email
    查看某个 npm 包的所有发行版版本号,比如 vue
    Git 查看文件修改详情
  • 原文地址:https://www.cnblogs.com/cuiwenyuan/p/5561404.html
Copyright © 2011-2022 走看看