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; ?>
】
相关推荐
- Python对象比较与排序_魔术方法解析【教程】
- c++ nullptr与NULL区别_c++11空
- Win11怎样安装微信开发者工具_Win11安装开
- php本地部署后session无法保存_sessi
- C++中的constexpr和const有什么区别
- Python如何创建带属性的XML节点
- Win11局域网共享怎么设置 Win11文件夹网络
- Windows电脑如何进入安全模式?(多种按键方法
- 如何解决Windows字体显示模糊的问题?(Cle
- C++中的Pimpl idiom是什么,有什么好处
- Win11任务栏怎么固定应用 Win11将软件图标
- c# 如何深拷贝和浅拷贝
- 如何在Golang中处理模块冲突_解决依赖版本不兼
- Win11键盘快捷键大全_Windows 11常用
- 如何用::实现单例模式_php静态方法与作用域操作
- MAC如何启用访达侧边栏显示_MAC Finder
- Windows10如何删除恢复分区_Win10 D
- Win11怎么查看电脑配置_Win11硬件配置详细
- Win11如何设置电源计划_Win11电源计划优化
- Win11怎么压缩文件 Win11自带压缩解压功能
- Python异步网络编程_aiohttp说明【指导
- Win11怎么设置声音输出设备_Windows11
- 用lighttpd能运行php吗_lighttpd
- 如何将竖排文本文件转换为横排字符串
- Win10系统怎么查看网络连接状态_Windows
- Windows 11如何查看系统激活密钥_Wind
- 如何使用Golang实现聊天室消息存档_存储聊天记
- PythonPandas数据分析项目教程_时间序列
- Win11蓝牙开关不见了怎么办_Win11蓝牙驱动
- Win11怎么关闭应用权限_Windows11相机
- 用Python构建微服务架构实践_FastAPI与
- Win10怎么卸载剪映_Win10彻底卸载剪映方法
- Win11怎么设置桌面图标间距_Windows11
- LINUX怎么设置系统语言_LINUX修改中文环境
- Win11如何设置计划任务 Win11定时执行程序
- 如何在 Go 中可靠地测试含 time.Time
- Win11讲述人怎么关闭_Win11误触开启语音朗
- 如何在Golang中实现CI/CD流水线自动化测试
- C++如何使用Qt创建第一个GUI窗口?(入门教程
- Python网络异常模拟_测试说明【指导】
- php打包exe怎么传递参数_命令行参数接收方法【
- Win11怎么关闭小组件_Win11禁用任务栏天气
- 如何使用正则表达式批量替换重复的“-”模式为固定字
- Python与OpenAI接口集成实战_生成式AI
- Python随机数生成_random模块说明【指导
- c++ std::future和std::prom
- Windows如何拦截腾讯视频广告_Windows
- 如何使用Golang实现RPC序列化与反序列化_G
- 如何在 Go 中正确初始化结构体中的 map 字段
- Python对象比较与排序_集合使用说明【指导】

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