0

DB 内のユーザーごとにアクションをトランザクションにラップしたいのですが、MSDTC を使用したくありません。したがって、使用するすべてのトランザクションの接続を手動で開こうとしています。以下は私のコードのスケッチです:

using (var myContext = new Entities())
{
    myContext.Database.Connection.Open();

    var clientQuery = from client in myContext.CustomerMasters
                      where client.CustomerType == (int)Enums.CustomerType.Client
                      select client;

    var clientList = clientQuery.ToList();

    foreach (var client in clientList)
    {
        using (TransactionScope transaction = new TransactionScope())
        {
            FuncCall(myContext, client);
        }
    }
}

void FuncCall(Entities myContext, CustomerMasters client)
{
    // ERROR IS HERE: 
    var alreadyChargedQuery = <LINQ-QUERY>.FirstOrDefault();
}

このコードを実行すると、次の例外が発生します: [System.Data.EntityException] = {"基になるプロバイダーが Open で失敗しました。"}

内部例外: InnerException = {"分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスの DTC を有効にしてください。"}

どんな助けでも大歓迎です。

4

0 に答える 0