エンティティ フレームワーク 4 でトランザクションを実装しようとしています。私が読んだことから、以下のコードは正しいです。SaveChanges は正常に動作しますが、最初の ExecuteFunction 呼び出しを実行するとすぐに、次の例外が発生します。
基になるプロバイダーが Open で失敗しました。---> System.Transactions.TransactionManagerCommunicationException: 分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。
データベース サーバーにログオンしましたが、分散トランザクション マネージャーというサービスは表示されませんが、分散トランザクション コーディネーターは表示され、開始されています。これを機能させるために何を変更する必要があるのか わかりません。誰でも知っていますか?ありがとう。
これがコードです。
using (var h = new WhaleEntities(ConnectionHelper.DBConnectString))
{
using (TransactionScope ts = new TransactionScope())
{
h.Sites.AddObject(s);
h.SaveChanges(SaveOptions.DetectChangesBeforeSave);
retval = s.SiteID;
h.ExecuteFunction("UpdateSiteInterfaceList", new ObjectParameter("pSiteID", retval), new ObjectParameter("pList", "10"));
h.ExecuteFunction("UpdateSiteInterfaceRequiredList", new ObjectParameter("pSiteID", retval),new ObjectParameter("pList", "Email"));
h.ExecuteFunction("UpdateSiteInterfaceAlwaysShownList", new ObjectParameter("pSiteID", retval),new ObjectParameter("pList", "10"));
h.ExecuteFunction("UpdateSiteInterfaceAlwaysRequiredList",new ObjectParameter("pSiteID", retval),new ObjectParameter("pList", "Email"));
ts.Complete();
//changes must be accepted manually once transaction succeeds.
h.AcceptAllChanges();
}
}