Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
技术百科
畫卷琴夢
发布时间:2026-01-02
浏览: 次 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 IGNORE或ON CONFLICT) - UPDATE:等于 WHERE 条件命中的行数,哪怕 SET 的值和原值一样(SQL Server 默认如此;MySQL 可配置是否严格检测变更)
- DELETE:等于被删除的行数,可为 0(无匹配)到任意正整数
-
存储过程调用:默认返回的是过程内最后一条可影响行数的语句的结果;如需获取 RETURN_VALUE,必须显式用
DynamicParameters添加ParameterDirection.ReturnValue参数
常见误区提醒
几个容易混淆的点:
- ❌ 不是自增主键值 —— 想取新 ID 请用 ExecuteScalar 配合
OUTPUT INSERTED.Id或SELECT SCOPE_IDENTITY() - ❌ 不是执行耗时或状态码 —— 它纯粹是数据库返回的整数
- ❌ 不会因事务回滚而返回负数 —— 回滚后 Execute 已不返回,而是抛出异常或由上层捕获
- ✅ 支持批量操作 —— 传入 List 实体或匿名对象集合时,返回的是所有批次累计影响行数
基本上就这些。理解 “返回值 = 数据库说改了几行”,就能避开大多数误判。
# 的是
# 就能
# 几个
# 也不
# 这一
# 不存在
# app
# 对象
# int
# 数据库
# .net
# delete
# select
# 抛出
# 状态码
# 返回值
# mysql
# sql
# postgresql
# 行数
# 主键
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎么关闭系统透明度_Windows11个
- Win11怎么关闭边缘滑动手势_Windows11
- 如何高效删除 NumPy 二维数组中所有元素相同的
- LINUX下如何配置VLAN虚拟局域网_在LINU
- 如何使用Golang recover捕获panic
- 如何在Golang中配置代码格式化工具_使用gof
- Mac怎么安装软件_Mac安装dmg与pkg文件的
- Windows11怎么用“记事本”自动换行与编码
- Win11怎么设置虚拟键盘_打开Win11屏幕键盘
- Win11怎么更改鼠标指针方案_Windows11
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- Windows如何拦截腾讯视频广告_Windows
- Python装饰器复用技巧_通用能力解析【教程】
- MAC如何启用访达侧边栏显示_MAC Finder
- Win11怎么设置默认浏览器Chrome_Wind
- Windows怎样关闭Edge新标签页广告_Win
- 如何在 Go 中创建包含 map 的 slice(
- Python集合操作技巧_高效去重解析【教程】
- c++如何用AFL++进行模糊测试 c++ Fuz
- Python异步网络编程_aiohttp说明【指导
- c++中的Tag Dispatching是什么_c
- php打包exe后无法读取环境变量_变量配置方法【
- Win11怎样安装钉钉客户端_Win11安装钉钉教
- c++ std::future和std::prom
- Go 中实现 Python urllib.quot
- Windows 11怎么更改锁屏超时时间_Wind
- php485返回数据不完整怎么办_php485数据
- Win11怎么开启远程桌面_Win11系统远程桌面
- C++中的std::shared_from_thi
- Win11怎么关闭自动更新 Win11永久关闭系统
- 如何用::实现工具类方法调用_php静态工具类设计
- Win11怎么开启远程桌面连接_Windows11
- Windows10电脑怎么设置文件权限_Win10
- Win11怎么更改文件夹图标_自定义Win11文件
- 如何在JavaScript中动态拼接PHP的bas
- Linux怎么实现内网穿透_Linux安装Frp客
- Python项目维护经验_长期演进说明【指导】
- MAC怎么使用表情符号面板_MAC Emoji快捷
- windows如何修改文件默认打开方式_windo
- Mac版Final Cut Pro入门_Mac视频
- C#如何使用Channel C#通道实现异步通信
- Win11怎么查看电脑配置_Win11硬件配置详细
- php转mp4怎么保留字幕_php处理带字幕视频转
- 如何用::实现单例模式_php静态方法与作用域操作
- 如何使用Golang读取日志文件_Golang b
- VSC里PHP变量未定义报错怎么解决_错误抑制技巧
- Windows的便笺功能如何使用?(桌面备忘技巧)
- Win10文件历史记录怎么用 Win10开启自动备
- php485函数执行慢怎么优化_php485性能提
- C#如何在一个XML文件中查找并替换文本内容

为 0(取决于 SQL 写法,如用
QQ客服