我们有以下设置:EF 5(截至今天为 6)、Ado.NET、Sql Server 2012、.NET 4.5 C#。
我们有一个服务和通用存储库,它混合使用 EF 和 Ado.NET 来进行更复杂的查询/更新以提高性能。我们一直将这些包装在 TransactionScope 中,一切正常。但是,我们偶尔会收到 MSDTC 错误,因为我们关闭了此服务以停止将其提升为分布式事务。
我们还管理每个请求的连接和事务,因此每个请求创建一个 Sql Connection,与 EF 和任何 ado.net 操作共享,并且仅当我们执行任何 Ado.NET 更新 anb/或 EF 时才会创建事务。这工作得很好,一切都参与事务,如果连接是在我们使用的事务之前创建的:
EnlistTransaction(Transaction.Current);
那么为什么有时会在多次连续请求后升级为 MSDTC,如此处的日志所示:
http://www.filedropper.com/warn-2013-10-18(如果有更好的文件共享方式请告诉我)
它似乎总是发生在第 15 个事务范围附近。这是池中没有更多连接的情况吗?
几天来,我一直在努力解决这个问题,希望能提供任何帮助。如日志所示,例如:事务标识符:eb18070a-77e4-4617-8fbb-63e416f5ab9c:15。