少し助けが必要です。これを管理しようとしていますが、うまくいきません。基本的に、エンティティ フレームワークと ADO.NET を混合して使用するサイトがあります。一部の選択は、パブリッシュ構造を使用してデータを取得する方法では機能しないため、エンティティ フレームワークを使用して保存することは不可能またはかかるためです。選択および操作されたデータ量を節約するのに数分。
要求の開始時に、接続を管理しようとする接続プロバイダーがあり、ado.net 読み取り用のスタンドアロン SqlConnection を提供するか、EF および更新を行う可能性のある ado.net sprocs で使用される単一の接続オブジェクトを提供します。次に、トランザクション スコープをコミットする変更の保存を呼び出すことができます。
残念ながら、これは単に機能していません。MSDTC へのエスカレーションは避けたいと考えていますが、他に方法がない場合は対処します。問題は、リクエストの開始時に単一の sqlconnection を作成してすべてのものと共有するか、それともすべての SqlConnection オブジェクトを個別に作成し、トランザクション スコープを使用して、MSDTC にエスカレートされた場合でも必要なことを実行させるかです。 .
私たちが見ているエラーのいくつかは次のとおりです。
- Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction.
- Cannot use SAVE TRANSACTION within a distributed transaction.
- The transaction has aborted.
- The operation is not valid for the state of the transaction.
また、スタンドアロン接続がトランザクションに参加しているが、トランザクション内ではない接続を使用してテーブルから選択しようとしていると思われるタイムアウトも発生しています。
私たちが試したことがうまくいかないので、ここでアドバイスをいただければ幸いです。