1

エンティティ フレームワーク 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();
    }
}
4

1 に答える 1

1

ここを参照してください: SQL Server で MSDTC を有効にするにはどうすればよいですか?

于 2010-09-29T13:12:55.267 に答える