2011-01-17 11 views
3

私のasp.netアプリケーションでエンタープライズライブラリのデータアクセスブロックを使用しています。複数のストアドプロシージャ間で、ビジネスロジックレイヤーからトランザクションを実装したいと考えています。 Entlibは、データベースアクセス用の新しい接続を開きます。 トランザクションスコープを次のように使用すると、分散トランザクションが行われますか?ビジネスロジック層でトランザクションを実装する方法

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) 
{ 
    // calling necessary DAL methods 
    scope.Complete(); 
} 

BLLからトランザクションを実装する方が良い方法はありますか?

答えて

0

SQL Serverについてバックエンドと言えば、サーバーのバージョンによって異なります。ここでは良い記事です:DO.NET and System.Transactions

私は引用:

をTransactionScopeのは、それが必要でない限り、そのオーバーヘッド の全てを完全に分散 トランザクションを作成しないように十分 スマートです。トランザクション に含まれるリソースが の場合、すべてが のメモリに残り、マイクロソフトが配信する トランザクションコーディネータ(DTC)は、 に関与しません。リソースがSQL Server 2005への 接続の場合、DTC は関与せず、SQL Server 2005がトランザクションを処理します。この は、内部の SQLトランザクションを開くことと同じです。 SQL Server 2000が である場合、それは完全な DTCトランザクションの使用に解決されます。

+0

Good Article。私はTransaction.Currentをチェックしました。トランザクションスコープ内のTransactionInformation.DistributedIdentifier。値はGuid.Empty {00000000-0000-0000-0000-000000000000}ですから、私は同じトランザクションスコープ内でSQL Serverへの複数のアクセスを行っていますが、トランザクションは軽量であると思います。 – developer

関連する問題