2017-06-19 45 views
1

我有一个使用异步/等待在C#中编写的小型web api服务器。净版本是4.5.2使用TransactionScopeAsyncFlowOption时事务会升级

一切工作正常,但我使用一些调用TransactionScope和基础事务升级到分布式。由于我使用异步/等待我的数据库调用,我使用TransactionScopeAsyncFlowOption。 SQL服务器运行的是版本2008 R2,因此它应该能够处理多个调用而不会使事务处理中止。所有调用都使用相同的连接字符串对同一个数据库进行调用。

所有的SQL连接都是在使用语句中完成的,而我并没有嵌套它们中的任何一个。每次调用数据库都会在另一个完成之前等待,因此在一次事务中不应该有两个连接同时处于活动状态,除非我误解了异步/等待的工作方式。如果这可能会影响事情,我正在使用Dapper。

我是否缺少明显的东西,或者是否需要重写我的代码以使用同一个连接进行事务中的所有操作?

回答

1

感觉真的很愚蠢,错过了在连接字符串中禁用了Pooling。删除Pooling=false并且事务不会升级到分布式状态。