Dapper中使用字符串作为动态参数查询时,结果不是预期的问题

编程入门 行业动态 更新时间:2024-10-27 09:39:26

Dapper中使用<a href=https://www.elefans.com/category/jswz/34/1771434.html style=字符串作为动态参数查询时,结果不是预期的问题"/>

Dapper中使用字符串作为动态参数查询时,结果不是预期的问题

1、如下图,c.industryId作为string类型当作参数传递,解析时会加单引号,即:”c.industryId“,

生成的查询语句就会变成

-- 这里把'c.IndustryGroup' 当成实际的值所以会查询不出数据

select b.`Name`,COUNT(c.Id) Num
                           from base_industry_dist b
                           LEFT JOIN base_companyinfo c on b.Id='c.IndustryGroup'
                           Where b.Deep=0 GROUP BY b.Id ORDER BY num

可修改成如下:

--使用$语法糖的写法可读性高,代码简洁

        /// <summary>/// 获取产业所属企业数量统计/// </summary>/// <param name="id"></param>/// <param name="deep"></param>/// <returns></returns>public async Task<List<IndustryCompanyStatistictQto>> GetIndustryCompanyStatistictsAsync(Guid? id, int deep){var sqlStr = @$"select b.`Name`,COUNT(c.Id) Num from base_industry_dist b ";var whereStr = @" Where b.Deep=@deep";var groupByStr = @" GROUP BY b.Id ORDER BY Num desc";var industryId = "c.IndustryGroup";var sqlPredicates = new List<string>();var queryParam = new DynamicParameters();queryParam.Add(nameof(deep), deep);if (deep == 1){industryId = "c.IndustrySubGroup";sqlPredicates.Add(" b.ParentId=@parentId");queryParam.Add("parentId", id.Value);}else if (deep == 2){industryId = "c.IndustrySpecific";sqlPredicates.Add(" b.ParentId=@parentId");queryParam.Add("parentId", id.Value);}else{queryParam.Add(nameof(industryId), industryId);}var leftJoinStr = @$" LEFT JOIN base_companyinfo c on b.Id={industryId}";sqlStr += leftJoinStr;sqlStr += whereStr;if (sqlPredicates.Any()){var sqlPredicatesStr = sqlPredicates.Aggregate((p, n) => $"{p} and {n}");sqlStr = @$"{sqlStr} and {sqlPredicatesStr}";}sqlStr += groupByStr;var connect = await GetDbConnectionAsync();var dbTransaction = await GetDbTransactionAsync();//var tt = (await connect.QueryAsync(sqlStr, queryParam, dbTransaction)).ToList();return (await connect.QueryAsync<IndustryCompanyStatistictQto>(sqlStr, queryParam, dbTransaction)).ToList();}

更多推荐

Dapper中使用字符串作为动态参数查询时,结果不是预期的问题

本文发布于:2023-12-04 12:37:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1660943.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   参数   动态   Dapper

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!