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

Che*_*vas 9 c# dapper

只需浏览本教程:https : //www.davepaquette.com/archive/2019/02/06/managing-transactions-in-dapper.aspx

我的理解(没有 Dapper)是一旦你有一个连接,你可以打开一个事务,然后执行一堆语句,然后提交或回滚事务。这些查询不需要引用事务,因为连接已经“知道”了它。

那么为什么每次执行某些操作时,Dapper 都需要事务?

Mar*_*ell 8

Dapper 不会改变基本 ADO.NET 模型的任何内容,因此如果您在事务中的操作失败,如果您没有明确地将事务传递给 Dapper,那么这是 ADO.NET 的事情,并且相同的操作将失败没有 Dapper 的方式完全相同。Dapper 所做的只是Transaction在命令上设置属性。

或者换句话说:我相信你的理解在这里是不正确的。我同意你的看法,你的理解和期望是合理的,我不知道命令甚至需要知道交易的任何充分理由,这最终是一个连接问题。但是:我不制定规则:/

请注意,可以在 ADO.NET 中使用“装饰器”模式(例如,迷你分析器就是这样做的),因此理论上可以创建一个连接包装器来为您跟踪事务,并拥有命令检索事务并在执行操作时自动附加它。如果您从 mini-profiler 的基本类型开始,它可能没什么用。