使用where 构造条件后进行分页查询异常(动态SQL+动态参数) 返回
C#论坛
老数据
1
2336
悬赏: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)
-
疋疋 VIP0
2020/3/11自己采用其他方法处理了
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 回复