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定时关机命令使用教程【技巧】  C++ STL算法库怎么用?C++常用算法函数(sort, find)教程【效率提升】  如何在 Go 项目开发中正确处理本地包导入与远程模块路径的一致性问题  Win10怎么关闭自动更新错误重启 Win10策略禁止失败补丁强制重启【防护】  c++怎么操作redis数据库_c++ hiredis库连接与命令执行【实战】  Windows系统时间服务错误_W32Time服务修复与同步教学  Win11怎么设置DNS服务器_Windows11修改网络适配器DNS优选  Python变量绑定机制_引用模型解析【教程】  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Linux怎么修改用户密码_Linux系统passwd命令使用与权限管理【方法】  如何自定义Windows终端的默认配置文件?(PowerShell/CMD)  如何使用Golang匿名函数_快速定义临时函数逻辑  Go语言中正确反序列化多个同级XML元素为结构体切片的方法  php中常量能用::访问吗_类常量与作用域操作符使用场景【汇总】  Win11怎样安装网易云音乐_Win11安装网易云教程【步骤】  如何在 Go 中创建包含 map 的 slice(嵌套数据结构)  如何使用Golang搭建Web开发环境_快速启动HTTP服务  Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】  Win10怎样安装Word样式库_Win10安装Word样式教程【步骤】  Win11怎么关闭键盘按键音_Win11禁用打字声音反馈【教程】  如何在Golang中处理URL参数_Golang URL参数解析与路由映射方法  php会话怎么开启_session_start函数的作用与使用时机【方法】  为什么本地php环境运行php脚本卡顿_php执行效率优化方法与设置【说明】  Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】  如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理  Win11怎么设置开机密码_Windows11账户登录选项PIN码  PythonPandas数据分析项目教程_时间序列透视表应用  Win11屏幕亮度突然变暗怎么解决_自动变暗问题处理  php8.4如何调用com组件_php8.4windows下com操作指南【教程】  如何使用 Selenium 正确获取篮球参考网站球员名单元素列表  php下载安装包太大怎么下载_分卷压缩下载方法【教程】  mac怎么退出id_MAC退出iCloud账号与Apple ID切换【指南】  Win10系统怎么查看网络连接状态_Windows10网络和共享中心  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Win11怎么设置虚拟键盘_打开Win11屏幕键盘操作指南【技巧】  LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现  PythonFastAPI项目实战教程_API接口与异步处理实践  php查询数据怎么导出csv_查询结果转csv文件保存【操作】  Win10怎么卸载金山毒霸_Win10彻底卸载金山毒霸方法【步骤】  Win11怎么开启游戏工具栏_Windows11 Xbox Game Bar快捷键  c++的位运算怎么用 与、或、异或、移位操作详解【底层知识】  c# 在高并发场景下,委托和接口调用的性能对比  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  php怎么连接数据库_MySQL数据库连接的基础代码编写【说明】  如何在Windows上设置闹钟和计时器_系统自带的时钟应用全攻略【生活技巧】  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  mac怎么安装pip_MAC Python pip安装工具与升级方法【详解】  Windows7怎么找回经典开始菜单_Windows7经典菜单找回步骤【方法】  全球各国上班时间表外贸邮件时间  如何使用Golang理解结构体指针方法接收者_Golang修改字段实践 

 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.