この問題は、ここの簡単な例では簡単に再現できませんが、誰かが経験やヒントを持っているかどうか疑問に思っていました.ここに問題があります:
- エンティティ フレームワークの使用
- アプリケーションには、(1) データが顧客などのエンティティテーブルに書き込まれる、(2) データが履歴テーブルに書き込まれる、多くのポイントがあります。
- これらのアクションはどちらもEntity Framework を使用しますが、異なるコンテキストを使用します
- これらのアクションは両方とも1 つのトランザクションで行う必要があります。つまり、一方が書き込みに失敗した場合、もう一方は書き込みを行うべきではありません。
- それらをTransactionScopeでラップできます。
このような:
using (TransactionScope txScope = new TransactionScope()) {
...
}
しかし、これは私に与えます:
Microsoft 分散トランザクション コーディネーター (MSDTC) は、ネットワーク トランザクションに対して無効になっています。
データベース管理者から、MSDTCは選択により無効化されており、インストールできないとのことでした。
したがって、各コンテキストが同じ EntityConnection を使用するという考えで、 MetadataWorkspace を使用して独自の EntityConnection を作成しようとして変更を加えています。ただし、これを機能させることはほぼ不可能であることが証明されています。たとえば、理論的には両方のコンテキストが EntityConnection を使用しているにもかかわらず、現在、上記のエラーが発生し続けています。たとえば、Entity Framework が MSDTC を必要とする場所/理由を理解するのは困難です。
共有する経験やコード例を持っている人はいますか?