码迷,mamicode.com
首页 > 移动开发 > 详细

Dapper中条件为In的写法

时间:2018-04-11 11:42:07      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:exception   语法错误   图片   info   set   query   style   cep   cli   

今天用Dapper更新是用到了IN写法,园子里找了篇文章这样写到

传统sql in (1,2,3) 用dapper就这样写

conn.Query<Users>("SELECT * FROM Users s WHERE s.id IN (@ids) ",new { ids = new int[]{1,2,3}})

conn.Query<Users>("SELECT * FROM Users s WHERE s.id IN (@ids) ",new { ids = IDs.ToArray()})

用了之后出现,

System.Data.SqlClient.SqlException:““,”附近有语法错误。”

这样的提示,

技术分享图片

跟踪SQL语句时发现按以上方法生成的SQL语句是这样的:

exec sp_executesql Nupdate WebSiteChanelListPage set status=0 where ID IN ((@ilist1,@ilist2)),N@ilist1 int,@ilist2 int,@ilist1=1,@ilist2=2

我们不难发现生成的语句中多了一层括号,于是果段修改代码:

 string UpdateString = "update WebSiteChanelListPage set status=0 where ID IN @ilist";
 connection.Execute(UpdateString,new { ilist = idlist.ToArray() });

执行成功!问题解决!

当然也有可能是我的Dapper的版本问题,我用得是:Dapper 1.50.4.0

 

Dapper中条件为In的写法

标签:exception   语法错误   图片   info   set   query   style   cep   cli   

原文地址:https://www.cnblogs.com/xwei/p/8794384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!