丈夫欲遂平生志,一载寒窗一举汤。这篇文章主要讲述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:“ “ ,” 附近有语法错误。”
这样的提示,
【Dapper中条件为In的写法】
文章图片
跟踪SQL语句时发现按以上方法生成的SQL语句是这样的:
exec sp_executesql N‘update 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
推荐阅读
- yum提示Another app is currently holding the yum lock
- 小程序app is not defined
- Android Studio3.0引用Module的本质和共享Module给其他Module
- android studio 2018.4.11 Activity间的传值
- tomcat启动时非常慢,启动时 一直卡在Root WebApplicationContext: initialization completed
- android O 蓝牙设备默认名称更改
- Android 自定义 View 知识点
- Tomcat7/8访问Server StatusManager AppHost Manager出现403 forbidden
- Android截图截取弹框AlertDialog