私はこれについて多くのことを読んできましたが、一部のドキュメントは現実に関連していないようです。潜在的な原因のいくつかはここで適切ですが、それらは 2008 年以前にのみ関連しています。
トランザクション スコープを定義します。トランザクション スコープ内で (異なるメソッド呼び出しで) さまざまな EF コンテキストを使用しますが、そのうちの 1 つを除いてすべてがデータ読み取り専用です。Context の最終的な使用法は、いくつかの新しいオブジェクトを作成してコンテキストに追加し、次に呼び出すことです。
context.SaveChanges()
IIS は 1 つのサーバーで実行されています。DB (Sql2012) は別のサーバー (WinServer 2012) で実行されています。
このコードを実行すると、次のエラーが表示されます。
分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。
明らかに、IIS マシンで DTC を有効にすると、これはなくなります。しかし、なぜ必要なのですか?
これ:
http://msdn.microsoft.com/en-us/library/ms229978.aspx
状態:
• 単一フェーズの通知をサポートしない永続リソースが少なくとも 1 つ、トランザクションに登録されている。• 単一フェーズの通知をサポートする少なくとも 2 つの永続的なリソースがトランザクションに登録されている
私が理解しているのは、ここでは当てはまりません。