Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解


Dapper的Execute方法返回int类型,表示SQL命令实际影响的数据库行数;插入成功返回1,批量插入返回N,UPDATE/DELETE返回匹配行数,0表示无匹配或冲突未执行,不反映执行成功与否。

Dapper 的 Execute 方法返回的是一个 int 类型的整数,它表示该 SQL 命令**实际影响的数据库行数**,不是执行成功与否的布尔值,也不是主键 ID 或其他业务值。

返回值就是“受影响行数”

这个数字直接对应数据库执行后报告的 rows affected。例如:

  • 插入一条新记录且成功 → 返回 1
  • 批量插入 5 条,全部成功 → 返回 5
  • UPDATE 语句匹配到 3 行,其中 2 行字段值实际发生了变化 → 多数数据库(如 SQL Server、PostgreSQL)仍返回 3(只要 WHERE 匹配就计数,不管是否真正更新了数据)
  • DELETE 条件没匹配到任何行 → 返回 0
  • INSERT IGNORE 或 ON CONFLICT DO NOTHING 在发生冲突时未插入 → 返回 0(Dapper 能如实反映这一行为)

不等于“执行是否成功”

Execute 不抛异常 ≠ 操作成功;返回 0 ≠ 一定出错。它只管“行数”,异常由底层 ADO.NET 抛出(比如连接失败、语法错误、违反约束等)。所以:

  • 返回 0 是完全合法的业务结果(如更新一个不存在的用户)
  • 返回大于 0 也不代表业务逻辑正确(比如误删了多条)
  • 需要结合业务语义判断:比如“新增用户”期望返回 1,若得 0 就该提示“用户名已存在”

和 Insert/Update/Delete 场景的对应关系

不同操作下返回值的典型含义:

  • INSERT:通常为 1(单条)或 N(批量),但含唯一键冲突时可能为 0(取决于 SQL 写法,如用 INSERT IGNOREON CONFLICT
  • UPDATE:等于 WHERE 条件命中的行数,哪怕 SET 的值和原值一样(SQL Server 默认如此;MySQL 可配置是否严格检测变更)
  • DELETE:等于被删除的行数,可为 0(无匹配)到任意正整数
  • 存储过程调用:默认返回的是过程内最后一条可影响行数的语句的结果;如需获取 RETURN_VALUE,必须显式用 DynamicParameters 添加 ParameterDirection.ReturnValue 参数

常见误区提醒

几个容易混淆的点:

  • ❌ 不是自增主键值 —— 想取新 ID 请用 ExecuteScalar 配合 OUTPUT INSERTED.IdSELECT SCOPE_IDENTITY()
  • ❌ 不是执行耗时或状态码 —— 它纯粹是数据库返回的整数
  • ❌ 不会因事务回滚而返回负数 —— 回滚后 Execute 已不返回,而是抛出异常或由上层捕获
  • ✅ 支持批量操作 —— 传入 List 实体或匿名对象集合时,返回的是所有批次累计影响行数

基本上就这些。理解 “返回值 = 数据库说改了几行”,就能避开大多数误判。


# mysql  # app  # 状态码  # .net  # sql  # select  # int  # delete  # 对象  # postgresql  # 数据库  # 行数  # 的是  # 返回值  # 抛出  # 主键  # 几个  # 这一  # 也不  # 就能  # 不存在 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win11蓝牙开关不见了怎么办_Win11蓝牙驱动丢失修复教程【方法】  Windows10系统怎么查看显卡型号_Win10 dxdiag显示选项卡  Windows 11如何查看系统激活密钥_Windows 11使用CMD或PowerShell命令找回Product Key  Python并发安全问题_资源竞争说明【指导】  Mac的Time Machine怎么用_Mac系统备份与数据恢复【完整指南】  Win11怎么设置指纹解锁 Win11笔记本录入指纹登录【教程】  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Win11怎么恢复出厂设置_Win11重置此电脑保留文件方法【详解】  Win10怎样设置多显示器_Win10多显示器扩展设置【攻略】  Win10如何卸载自带Edge_Win10彻底卸载Edge浏览器教程【攻略】  Python文件管理规范_工程实践说明【指导】  Windows怎样拦截WPS弹窗广告_Windows拦截WPS弹窗广告设置【步骤】  PythonGIL机制理解_多线程限制解析【教程】  php中::能用于接口静态方法吗_接口静态方法调用规则【操作】  Win11怎么关闭自动调节亮度 Win11禁用内容自适应亮度【设置】  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  VSC怎么在PHP中调试MySQL_数据库交互排查技巧【教程】  PHP主流架构如何处理会话管理_Session与Cookie【技巧】  php订单日志怎么记录物流_php记录订单物流变更日志指南【指南】  Win11系统更新后黑屏怎么办 Win11更新黑屏修复教程【方法】  Win11关机快捷键是什么_Win11快速关机方法【大全】  MAC的“接续互通”功能无法使用怎么办_MAC检查蓝牙、Wi-Fi和相同Apple ID登录  Win10系统怎么查看显卡温度_Win10任务管理器GPU温度  Win11怎么设置默认浏览器Chrome_Windows11修改默认网页打开方式  Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】  Python 模块的 __name__ 属性如何由导入方式决定?  如何在 PHP 中按相同键合并两个关联数组为二维数组  如何在JavaScript中动态拼接PHP的base_url与jQuery变量  MAC怎么设置程序窗口永远最前_MAC窗口置顶插件安装与快捷设置【方法】  微信里的php文件怎么变mp4_微信接收php转mp4操作步骤【操作】  零基础学会Python自动化办公_高效处理Excel与PDF文档  如何有效拦截拼接式恶意域名的垃圾信息  如何用正则表达式精确匹配“start”到“end”之间最多含一个换行符的文本段  Win11怎么清理C盘下载文件夹_Win11清理下载文件夹技巧【教程】  Win11怎么检查TPM2.0模块_Windows11受信任平台模块开启状态查询  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  英国搜索:多数英国人认为语言搜索是未来搜索  C#怎么使用委托和事件 C# delegate与event编程方法  如何在 ACF 中正确更新嵌套多层的 Group 字段子字段  Win11怎么查看局域网电脑_Windows 11网络邻居发现设置【技巧】  Win11怎么关闭内容自适应亮度_Windows11显示设置CABC关闭  Windows10怎么用“讲述人”读屏辅助 Windows10轻松使用开启讲述人朗读屏幕文字帮助视障用户【教程】  Win11怎么更改电脑密码_Windows 11修改本地账户密码【步骤】  Mac如何开启夜览模式_Mac护眼模式设置与定时  Win11相机打不开提示错误怎么修_相机权限开启与驱动修复【影像修复】  Windows10如何更改盘符名称_Win10重命名硬盘分区卷标  Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】  php中self::能调用子类重写的方法吗_静态绑定与重写关系【介绍】  c++输入输出流 c++ cin与cout格式化输出【方法】  Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】 

 2026-01-02

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.