新闻中心
Dapper查询时如何指定事务 Dapper在事务中执行Query
Dapper 本身不管理事务,但可通过显式传入 IDbTransaction 参数在 ADO.NET 事务中执行查询与更新,需确保连接已打开、事务由该连接创建,并由开发者手动调用 Commit() 或 Rollback()。

Dapper 本身不管理事务,但可以配合 ADO.NET 的 SqlTransaction 在事务中执行查询。关键在于:**把已开启的事务显式传给 Dapper 的查询方法**。
使用 IDbTransaction 参数传入事务
Dapper 的所有查询方法(如 Query<t></t>、QueryFirstOrDefault、Execute 等)都支持可选的 IDbTransaction 参数。只要传入有效的事务对象,Dapper 就会在该事务上下文中执行 SQL。
- 确保连接(
IDbConnection)已打开,且事务由该连接开启 - 事务对象必须是同一连接创建的,跨连接传入会抛出异常
- 事务生命周期由你手动控制(
Commit()/Rollback()),Dapper 不参与提交或回滚
典型用法示例(SQL Server)
C# 示例:
Procys
AI驱动的发票数据处理
102
查看详情
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
try
{
// 在事务中查询
var users = connection.Query<User>(
"SELECT * FROM Users WHERE Status = @status",
new { status = "Active" },
transaction); // ← 关键:传入 transaction
<pre class="brush:php;toolbar:false;"> // 在事务中更新
int rows = connection.Execute(
"UPDATE Orders SET Processed = 1 WHERE UserId IN @userIds",
new { userIds = users.Select(u => u.Id).ToArray() },
transaction);
transaction.Commit(); // 手动提交
}
catch
{
transaction.Rollback(); // 出错时手动回滚
throw;
}
}}
注意事项和常见问题
- 事务未提交前,其他连接默认看不到未提交的变更(取决于隔离级别)
- 如果查询语句本身含
BEGIN TRANSACTION或COMMIT,可能干扰外部事务,应避免 - 异步方法(如
QueryAsync)同样支持IDbTransaction参数,用法一致 - 使用
TransactionScope时,Dapper 会自动感知环境事务(需开启连接并调用Open()),但显式传参更清晰可控
基本上就这些。核心就是“连接开、事务启、参数传、自己管提交”。不复杂但容易忽略传参这一步。
以上就是Dapper查询时如何指定事务 Dapper在事务中执行Query的详细内容,更多请关注其它相关文章!
# 相关文章
# seo基础pdf
# 广州家具seo方法有哪些
# 法语推广网站有哪些好
# 如何利用B2B网站推广
# olay新媒体营销推广策略
# 网络营销抖音推广文案
# 建设违法网站
# 北碚区建设通网站
# 红光镇seo
# 广州电子行业网站建设
# 中文网
# app
# 会在
# 修饰符
# 序列化
# 见性
# 由该
# 运算符
# 控制程序
# 如何处理
# .net
# c#
# 常见问题
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
C++如何解决segmentation fault_C++段错误调试与原因分析
腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录
俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口
德邦快递查询平台 德邦快递物流信息查询入口
照顾宝贝2小游戏点击立即在线玩
PHP中SSG-WSG API的AES加密实践:正确使用初始化向量
J*aScript:在map操作中高效处理空数组
一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战
J*a递归快速排序中静态变量的状态管理与陷阱
神庙逃亡小游戏在线玩 神庙逃亡小游戏入口
“音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!
必由学官网首页入口 必由学教师网页版登录指南
动漫岛观看全网网 动漫岛在线正版动漫入口
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
海棠账号登录入口_登录海棠账户同步阅读记录
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
Go语言JSON解析深度指南:动态访问与结构体映射实践
深入理解J*a链表中的IPosition接口与使用
Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
谷歌google账号怎么注册账号 谷歌账号注册官方流程
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
抖音网页版怎么|直播|_抖音网页版开播操作指南
Fabric模组开发:自定义物品与物品组的现代管理方法
Golang如何使用context实现超时取消_Golang context超时取消模式实践
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
Go Martini框架:动态服务解码后的图片内容
探索高级语言到原生C/C++的转译:挑战与内存管理策略
夸克AO3官网入口_AO3镜像网站2025推荐
AO3网页版最新入口合集 Archive of Our Own在线访问指南
c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
绝地鸭卫平a核爆刀流玩法攻略
age动漫网站入口 age动漫官网直接访问入口
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
12306选座怎么选到特殊座位_12306特殊座位选择注意事项
win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】
composer的"require-dev"部分是用来做什么的?
蛙漫安全无毒 官方认证的绿色入口
c++项目目录结构应该如何组织_c++工程化项目结构规范
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染
如何修改开机登录密码_Windows账户安全设置超详细教程【必学】
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
AngularJS $http POST请求数据传递与Go后端接收实践


2025-12-12
浏览次数:次
返回列表
"UPDATE Orders SET Processed = 1 WHERE UserId IN @userIds",
new { userIds = users.Select(u => u.Id).ToArray() },
transaction);
transaction.Commit(); // 手动提交
}
catch
{
transaction.Rollback(); // 出错时手动回滚
throw;
}
}