问题遇到的现象和发生背景
.net core web 使用 sqlsugar 这个 orm 是不定时的会出现以下问题
第一次生成的查询记录列表,生成的语句为
SELECT id
,upid
,level
,name
,type
,size
,dir
,creater
,create_date
,editer
,edit_date
FROM `tb_file`
WHERE ( `dir` = @dir0 ) AND ( `upid` = @upid1 )ORDER BY `id` ASC
第二次查询单个记录时(**db.GetById(id)**)为什么生成的语句为
SELECT id
,upid
,level
,name
,type
,size
,dir
,creater
,create_date
,editer
,edit_date
FROM (SELECT id
,upid
,level
,name
,type
,size
,dir
,creater
,create_date
,editer
,edit_date
FROM `tb_file`
WHERE ( `dir` = @dir0 ) AND ( `upid` = @upid1 )ORDER BY `id` ASC ) t
WHERE id
IN (@InPara0)
不是应该是
SELECT id
,upid
,level
,name
,type
,size
,dir
,creater
,create_date
,editer
,edit_date
FROM tb_file
t
WHERE id
IN (@InPara0)
为什么会出现嵌套的上一个查询
问题相关代码,请勿粘贴截图
第一次查询的方法为:
public Tuple<List<tb_file>, int> ListPagin(string dir, int? upid, string name, int? type, ushort? level, string orderName, int? orderType, int page, int page_size)
{
ISugarQueryable<tb_file> queryable = _dal.CreateQueryable();
queryable = queryable.WhereIF(!string.IsNullOrEmpty(dir), p => p.dir == dir);
queryable = queryable.WhereIF(upid != null, p => p.upid == upid);
queryable = queryable.WhereIF(!string.IsNullOrEmpty(name), p => p.name.Contains(name));
queryable = queryable.WhereIF(type != null, p => p.type == type);
queryable = queryable.WhereIF(level != null, p => p.level == level.Value);
if (!string.IsNullOrEmpty(orderName) && orderType != null)
{
OrderByType obt = orderType.Value == 0 ? OrderByType.Asc : OrderByType.Desc;
switch (orderName)
{
case "name":
queryable = queryable.OrderBy(p => p.name, obt);
break;
case "size":
queryable = queryable.OrderBy(p => p.size, obt);
break;
case "date":
queryable = queryable.OrderBy(p => p.edit_date, obt);
break;
default:
queryable = queryable.OrderBy(p => p.id, OrderByType.Asc);
break;
}
}
else
{
queryable = queryable.OrderBy(p => p.id, OrderByType.Asc);
}
PageModel pm = new PageModel
{
PageIndex = page,
PageSize = page_size
};
Tuple<List<tb_file>, int> result = _dal.GetPageListAndTotal(queryable, pm);
return result;
}
第二次调用的代码为
db.GetById(id)
以上的问题不定时会发生,时有时无的