次のセットアップがあります: EF 5 (現在は現在 6)、Ado.NET、Sql Server 2012、.NET 4.5 C#。
EF と Ado.NET の組み合わせを使用して、より複雑なクエリ/パフォーマンスの更新を行うサービスと汎用リポジトリがあります。これらを TransactionScope でラップしており、すべて正常に動作します。ただし、分散トランザクションへの昇格を停止するためにこのサービスをオフにしているため、MSDTC エラーが発生することがあります。
また、リクエストごとに接続とトランザクションを管理するため、リクエストごとに単一の Sql 接続が作成され、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。