当前位置: 首页 > news >正文

【转】[C#] Dapper 的 Not In 有坑

【转】[C#] Dapper 的 Not In 有坑

今天测试时发现 Not In 时需要提前查参数里集合是否为空,否则 SQL 的查询结果必为空

问豆包 给了我确定的答案:

args 是空集合时:

Dapper 会生成 SQL:Id NOT IN ()

这在 SQL Server 里是语法错误 + 逻辑永远假 → 查不到任何数据!

 

 

为什么会这样?

 
  1. SQL 语法不允许 IN ()NOT IN ()
     
    括号里必须至少有一个值。
     
  2. 当你传空列表给 Dapper:
     
    • Dapper 不会帮你过滤
    • 直接生成 NOT IN ()
    • 数据库把这个条件当成:永远不成立
    • 所以结果 = 0 条
     
  3. 业务逻辑上:
     
    • NOT IN (空) = 应该返回全部数据
    • 但数据库不这么理解
    • 数据库理解成:语法错误 → 条件不成立

正确写法(一劳永逸)

 

方案 :判断空,手动处理(最稳)

  
var sql = "SELECT * FROM User";if (args != null && args.Any())
{sql += " WHERE Id NOT IN @args";
}var list = conn.Query<User>(sql, new { args });
http://www.jsqmd.com/news/671962/

相关文章:

  • 从零到一:基于Spring Cloud Alibaba + Nacos + Sentinel的电商秒杀系统实战
  • SkiaSharp实战:5分钟搞定跨平台图表生成(支持导出PDF/SVG,含自动换行文本库推荐)
  • 为什么你的Dify插件总被拒绝上架?——基于217个审核失败案例的合规性逆向分析报告
  • ComfyUI-Inpaint-Nodes:3种方法彻底解决模型加载失败问题
  • 从相关到因果:一文读懂因果Transformer的核心与应用
  • 如何调试和测试前端代码:全面指南与最佳实践
  • 告别MCU直连U盘的烦恼:用CH376模块为你的Arduino/ESP32项目轻松扩展USB存储
  • 因果AI的稳定之锚:一文读懂不变性学习
  • 紧急采购SMC气管?推荐几家支持现货速发、全国发货的正规代理商 - 品牌推荐大师
  • Dify微调效率提升370%的关键路径,从数据预处理到评估部署的7个不可跳过的黄金检查点
  • 伸展树
  • 终极指南:3分钟解决Minecraft MASA模组英文界面困扰的完整方案
  • 有实力的佛山本地推拉门源头厂家,极简轻奢风格产品系列全吗 - 工业品牌热点
  • STM32CubeMX LL库串口通信避坑指南:从配置到中断处理的完整流程(基于STM32F103)
  • 最新版本2026年Anaconda安装教程+配置+环境创建教程
  • 因果AI新引擎:干预表示学习全解析:从原理到产业落地
  • 2026青海家装市场消费痛点与本地装修设计公司综合梳理 - 深度智识库
  • 万字详解 RAG 向量索引算法和向量数据库
  • 已知前、中、后序中两种遍历结果以重建二叉树
  • 手把手教你为STM32移植AK09918磁力计驱动(附Linux驱动对比与源码)
  • 用树莓派控制电源?PyVISA+SCPI硬件自动化全攻略(2024新版)
  • 2026年全国景观雾森系统TOP5品牌实力榜单 - 深度智识库
  • 别再只用MODIS了!Landsat、SPOT-VGT等NDVI历史数据宝藏库盘点与实战拼接教程
  • 解密音乐格式壁垒:Unlock Music浏览器端音频转换方案深度解析
  • MySQL 事务隔离与锁机制详解
  • CodeBuddy Code CLI 快速上手:从安装到第一次对话
  • Winhance中文版终极指南:5步快速优化Windows系统性能
  • 2026届必备的十大降AI率方案推荐
  • 终极指南:3步掌握QQ音乐文件解密,qmcdump让你的音乐无处不在
  • 手把手教你用geopandas和mgwr分析城市POI:以南京小区分布为例