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


相关推荐: 如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类  Win10系统怎么查看网络连接状态_Windows10网络和共享中心  MAC如何启用访达侧边栏显示_MAC Finder偏好设置与常用目录添加【教程】  Win11怎么关闭贴靠布局_Win11禁用窗口最大化时的布局菜单  C++友元类使用场景_C++类间协作设计方式讲解  如何使用Golang管理模块版本_Golanggo mod tidy与升级方法  Win11怎么恢复旧版开始菜单_通过软件还原Win10风格菜单【详解】  Mac的“调度中心”与“空间”怎么用_Mac多桌面高效管理【技巧】  Go语言中CookieJar的持久化机制解析:内存存储与自定义持久化方案  Win11怎么设置多显示器任务栏 Win11扩展任务栏至多屏方便跨屏操作【技巧】  Win11怎么解压RAR文件 Win11自带解压功能使用方法  Win11文件扩展名怎么显示 Win11查看文件后缀名设置【步骤】  php文件怎么变mp4保存_php输出视频流保存为mp4操作【操作】  使用类变量定义字符串常量时的类型安全最佳实践  Win11怎么查看激活状态_查询Windows 11是否已永久激活【详解】  LINUX怎么查看进程_LINUX ps命令查看运行服务  Python大型项目拆分策略_模块化解析【教程】  Win10如何卸载Skype_Win10卸载Skype步骤【步骤】  c++中如何对数组进行排序_c++数组排序算法汇总  Win11怎么关闭内容自适应亮度_Windows11显示设置CABC关闭  C++中的协变与逆变是什么?C++函数指针与返回类型详解【类型系统】  为什么Go需要go mod文件_Go go mod文件作用说明  Win11开机Logo怎么换_Win11自定义启动画面工具【高级】  如何使用正则表达式批量替换重复的星号-短横模式为固定字符串  C++中引用和指针有什么区别?(代码说明)  Win11关机快捷键是什么_Win11快速关机方法【大全】  Windows10系统怎么查看硬盘健康_Win10 SMART信息检测工具  如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)  Win11怎么关闭系统声音_Win11系统提示音静音设置【详解】  Windows蓝屏错误0x0000001E怎么修复_KMODEEXCEPTIONNOTHANDLED排查  Linux怎么修改用户密码_Linux系统passwd命令使用与权限管理【方法】  Win11怎么开启空间音效_Windows11耳机杜比音效与Sonic设置  如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何在Golang中定义接口_抽象方法和多态实现  Win11无法拖拽文件到任务栏怎么办_Win11开启拖放功能修复【方法】  Win11怎么开启远程桌面_Win11系统远程桌面启用开关  Windows 11怎么设置默认解压软件_Windows 11为ZIP/RAR文件指定默认打开程序  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  如何在 Go 中创建包含 map 的 slice(嵌套数据结构)  c++ std::future和std::promise c++线程间通信【教程】  Python异步网络编程_aiohttp说明【指导】  php8.4如何配置ssl证书_php8.4https访问配置指南【教程】  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  php怎么下载安装后无法解析php文件_服务器配置检查【解答】  c++中如何计算坐标系中两点间距离_c++勾股定理求距离  如何使用Golang开发基础文件下载功能_Golang HTTP文件响应与缓存实现  Windows怎样关闭开始菜单广告_Windows关闭开始菜单广告设置【步骤】  如何使用Golang sync.Map实现并发安全map_避免锁竞争  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】 

 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.