发现一个ToPageListAsync的疑似bug,求确认,求解决 返回
C#论坛
老数据
1
3849
悬赏:5 飞吻
sqlsugar版本:5.0.0.11
使用项目:老张的哲学开发的Blog.Core项目,修改了PermissionController下的Get方法:
[HttpPost] // 因为要传数组改成了Post
public async Task<MessageModel<PageModel<Permission>>> Get(int[] Pids, int page = 1, string key = "")
{
...
Expression<Func<Permission, bool>>
where = (a) => a.IsDeleted != true && (a.Name != null && a.Name.Contains(key))
&& ((Pids == null && 1 == 1) || SqlFunc.ContainsArray(Pids, a.Pid));
permissions = await _permissionServices.QueryPage(where, page, intPageSize, " Id desc ");
...
}以及BaseRepository中的QueryPage方法:
public async Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 1, int intPageSize = 20, string strOrderByFileds = null)
{
RefAsync<int> totalCount = 0;
var sql = _db.Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToSql();
var list = await _db.Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToPageListAsync(intPageIndex, intPageSize, totalCount);
var list1 = await _db.Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToListAsync();
int pageCount = (Math.Ceiling(totalCount.ObjToDecimal() / intPageSize.ObjToDecimal())).ObjToInt();
return new PageModel<TEntity>() { dataCount = totalCount, pageCount = pageCount, page = intPageIndex, PageSize = intPageSize, data = list };
}问题描述:
当参数是数组类型时(也就是参数Pids),ToPageListAsync查询返回数据真实条数和totalCount不一致,ToListAsync返回数据正常
当
Pids=[2];
时,list的数量是50,list1的数量是2
当
Pids=[2,5];
时,项目直接报错
热忱回答(1)
-
啊王小璧隔是 VIP0
2020/4/11问题已解决,使用Expressionable动态拼接lambda表达式的方法没有出现上面描述的问题,一切正常
0 回复