在事务中使用dapper异步

asynchronous dapper transactions

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

现在我们有以下方案,我想加快速度。

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

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

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

注意缺少await关键字。

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

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

热门答案

如果第一次更新在第二次更新中不起作用而您不需要等待结果,则可以在不等待的情况下以异步模式执行。我建议你阅读这个页面:

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

它解释了如何使用与数据库的异步连接执行异步命令,我认为它对您有用。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因