使用where 构造条件后进行分页查询异常(动态SQL+动态参数) 返回

反馈
1 108
该叫什么 疋疋 发布于2周前
悬赏:0 飞吻

长话简说:部分代码

// 生成where条件的SQL 字符串以及对应会使用到的参数的集合。
// 跟踪数据库执行记录发现生成的SQL 统计总条数正确,进行分页查询时参数未携带
var whereSql = searchFilter.ToSQL(out Dictionary<string, object> parms);
// 目前测试中的值为
// whereSql:[SBVCode] IN (@p0)
// parms:{key:"p0",value:[ "00000098", "00000099", "00000100" ]}

RefAsync<int> totalCount = 0;
var list = await SugarClient.Queryable<TEntity>()
                .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
                .Where(whereSql, parms) // 问题关键在此。
                .ToPageListAsync(intPageIndex, intPageSize, totalCount);

猜想在使用动态sql 的where 条件之后,parms 只生成了一次

热忱回答1

  • 自己采用其他方法处理了

     var whereSql = searchFilter.ToSQL(out Dictionary<string, object> parms);
    
    // 原本ToPageListAsync查询方法有问题
    //RefAsync<int> totalCount = 0;
    //var list = await SugarClient.Queryable<TEntity>()
    //                         .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
    //                         .Where(whereSql, parms)
    //                         .ToPageListAsync(intPageIndex, intPageSize, totalCount);
    
    // 手动分开两步进行处理
    int totalCount = await SugarClient.Queryable<TEntity>().Where(whereSql, parms).CountAsync();
    
    var list = await SugarClient.Queryable<TEntity>()
                                             .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
                                             .Where(whereSql, parms)
                                             .ToPageListAsync(intPageIndex, intPageSize);


    0 回复

版块

学习文档

最新会员

发布达人

回贴达人