zoukankan      html  css  js  c++  java
  • 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=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

  • 相关阅读:
    订单生成案例详解
    分页案例详解
    简单的多条件查询案例
    删除选中案例详解
    转账汇款案例
    登录操作记住用户名实现
    根据自定义异常来回显错误信息
    会话技术cookie和session详解
    JDBC
    Netty入门教程——认识Netty
  • 原文地址:https://www.cnblogs.com/xwei/p/8794384.html
Copyright © 2011-2022 走看看