在事务中使用 dapper async

Posted

技术标签:

【中文标题】在事务中使用 dapper async【英文标题】:Using dapper async within a transaction 【发布时间】:2015-02-28 19:45:13 【问题描述】:

我们目前正在使用 dapper 处理一些非常昂贵的更新/删除场景,我们对此非常满意。

现在我们有以下场景,我想加快速度。

更新 1 大约需要 60 秒。 更新 2 需要

如果我们以同步方式执行此操作,我们总共将花费大约 61 秒的等待时间。 我们能否加快速度,使用ExecuteAsync 方法调用第一个更新,但不等待它。像这样:

Connection.ExecuteAsync("Update 1", new  someValue , Transaction, 120);
Connection.Execute("Update 2", new  someValue , Transaction);

请注意缺少await 关键字。

这会加快速度,但这是个好主意吗?它可以在事务中使用吗? 当事务提交被命中并且第一次更新仍在执行时会发生什么? 或者在没有 await 的情况下使用 ExecuteAsync 是个坏主意?

假设更新 2 不依赖于更新 1。

【问题讨论】:

【参考方案1】:

如果第一次更新对第二次的相同数据不起作用并且您不需要等待结果,您可以在异步模式下执行它而无需等待。 我建议你阅读这个页面:

http://www.joesauve.com/async-dapper-and-async-sql-connection-management/

它解释了如何通过与数据库的异步连接来执行异步命令,我认为它对你很有用。

【讨论】:

以上是关于在事务中使用 dapper async的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Dapper - UnitOfWork 事务错误

.net 中dapper实现事务的三种方式总结

C# Dapper 基本使用 增删改查事务等

Dapper事务操作

csharp Async Dapper Demo。包括缓冲和非缓冲连接助手。

Net Core中数据库事务隔离详解——以Dapper和Mysql为例