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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM