使用TransactionScopeAsyncFlowOption时,事务会升级

时间:2017-06-19 19:49:27

标签: c# async-await distributed-transactions

我有一个使用async / await用C#编写的小型web api服务器。净版本为4.5.2

除了我使用TransactionScope进行一些调用并将底层事务升级为分布式事务外,一切正常。由于我使用async / await进行数据库调用,因此使用TransactionScopeAsyncFlowOption。 SQL服务器正在运行版本2008 r2,因此它应该能够处理多个调用而无需事先处理事务。所有调用都使用相同的连接字符串进行相同的数据库。

所有SQL连接都是在using语句中完成的,我没有嵌套其中任何一个。在另一个事务完成之前,等待对数据库的每次调用,因此在一个事务中不应该同时激活两个连接,除非我误解了async / await是如何工作的。我使用Dapper,如果这可能会影响事情。

我是否遗漏了一些显而易见的内容,或者我是否需要重写我的代码以便为事务中的所有操作使用相同的连接?

1 个答案:

答案 0 :(得分:1)

感觉非常愚蠢,错过了在连接字符串中禁用了Pooling。已删除DateTime::RSS,并且事务未升级到分布式状态。