我们有以下设置:EF 5(现在是6个),Ado.NET,Sql Server 2012,.NET 4.5 C#。
我们有一个服务和通用存储库,使用EF和Ado.NET的混合,可以提供更复杂的查询/更新性能。我们一直在TransactionScope中包装它们,一切正常。但是,我们偶尔会收到MSDTC错误,因为我们已关闭此服务以阻止它升级到分布式事务。
我们还管理每个请求的连接和事务,因此每个请求都会创建一个Sql Connection,与EF共享以及任何ado.net操作,并且只有在我们执行任何Ado.NET更新和/或EF时才会创建事务。这非常正常,一切都参与了事务,如果在我们使用的事务之前创建了连接:
EnlistTransaction(Transaction.Current);
那么为什么有时会在多个过度请求之后向MSDTC提升,因为此处的日志显示:
http://www.filedropper.com/warn-2013-10-18(如果有更好的方式来分享文件,请告诉我们)
似乎总是在第15个交易范围内发生。这是不是在游泳池中连接的情况?
我一直在为此敲打几天,并感谢任何帮助。例如,日志显示在此处:事务标识符:eb18070a-77e4-4617-8fbb-63e416f5ab9c:15。