c# - 为什么Dapper在执行查询时需要对事务的引用?

标签 c# dapper

只需看一下本教程:https://www.davepaquette.com/archive/2019/02/06/managing-transactions-in-dapper.aspx
我的理解(没有Dapper)是一旦建立连接,就可以打开一个事务,然后执行一堆语句,然后提交或回滚该事务。这些查询不需要引用事务,因为连接已经“知道”该事务。
那么,为什么Dapper每次执行某些操作时都需要事务?

最佳答案

Dapper不会改 rebase 本的ADO.NET模型的任何内容,因此,如果您未显式将事务传递给Dapper的情况下在事务中进行的操作失败,则这是ADO.NET,并且相同的操作也会失败没有Dapper的情况完全相同。 Dapper所做的全部工作就是在命令上设置Transaction属性。
或者换一种说法:我相信您的理解在这里是不正确的。我同意您的看法,但是您的理解和期望是合理的,并且我不知道命令甚至需要知道有关事务的任何充分理由,这最终是连接方面的问题。但是:我没有制定规则:/
请注意,可以在ADO.NET中使用“装饰器”模式(例如,使用mini-profiler进行此操作),因此从理论上讲,可以创建一个连接包装器来为您跟踪事务,并具有以下命令检索事务并在执行操作时自动附加它。如果您从mini-profiler的基本类型开始,则可能工作不多。

关于c# - 为什么Dapper在执行查询时需要对事务的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64620471/

相关文章:

c# - C#中如何获取两个日期之间的日期

c# - 如何返回 JSON 而不是关联数组

.net - 有没有办法用 Dapper 调用存储过程?

.net - 在mysql中获取索引还是使用配对列表?

c# - Moq.Dapper QueryAsync 不适用于模拟事务对象

c# - 从 http 切换到 https 时丢失 cookie

c# - 重写Linq 'to other format'

c# - 如何用 C# 中的函数语句替换 for 循环?

c# - Json.NET区分大小写的反序列化

c# - 如何使用 Dapper 获取用户定义的 SQLException 编号