Dapper中条件为In的写法
今天用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 N'update WebSiteChanelListPage set status=0 where ID IN ((@ilist1,@ilist2))',N'@ilist1 int,@ilist2 int',@ilist1=,@ilist2=
我们不难发现生成的语句中多了一层括号,于是果段修改代码:
string UpdateString = "update WebSiteChanelListPage set status= where ID IN @ilist"; connection.Execute(UpdateString,new { ilist = idlist.ToArray() });
执行成功!问题解决!
当然也有可能是我的Dapper的版本问题,我用得是:Dapper1.50.4.0
相关推荐
Iamthedoctor 2020-05-10
sunzxh 2020-05-10
Iamthedoctor 2020-05-02
架构技术交流 2020-05-02
步行者 2020-05-02
LeonZhang0 2019-12-16
86523296 2019-10-19
piaoman0 2014-08-15
KOJ 2019-07-01
TWITTER自行车符R 2016-06-12
蔷薇部落 2019-04-26
功夫熊猫 2019-06-28
zyjj 2019-06-27
欢子 2019-06-26
兔子压倒窝边草 2019-06-25
lovejk 2019-06-22
ASAformairuan 2019-03-24
zhlflylinux 2010-06-28