2011-06-27 60 views
7

SQL Server 2005データベースと通信してストアドプロシージャを実行するアプリケーションを開発しています。私のクライアントは、SQL ServerではなくC#側ですべてのトランザクションを管理するよう要求しているので、データベースにアクセスするときはSystem.Transactions.TransactionScopeを使用しています。しかし、私はちょうどSystem.Transactions.Transactionデータ型を見て、私は混乱している...各タイプの主な長所/短所は何ですか?どちらを使うべきですか?TransactionとTransactionScopeの相違点

エンタープライズライブラリのデータアクセスアプリケーションブロックも使用する必要があります。 MSDNから

+1

関連項目http://stackoverflow.com/questions/224689/transactイオンインネット –

+0

http://stackoverflow.com/questions/542525/transactionscope-vs-transaction-in-linq-to-sqlの繰り返しのように見えます – Dave

答えて

9

のTransactionScopeクラスは、トランザクション自体と対話するためにあなたを必要とせずに、トランザクションに参加 ように、コードのブロックをマークする 簡単な方法を提供 。 トランザクションスコープでは、 の環境トランザクション を自動的に管理できます。その使いやすさのために と トランザクション アプリケーションを開発するときは、 のTransactionScopeクラス を使用することをお勧めします。 TransactionScopeをインスタンス化すると、 トランザクションのマネージャは、に参加するトランザクションをに決定します。一度決定されると、 スコープは常にそのトランザクション に参加します。この決定は、 トランザクションが存在するかどうかと、コンストラクタ内のTransactionScopeOption パラメータの値 の2つの要因に基づいて、 に基づいています。 アンビエントトランザクションは、コードが実行されるトランザクション です。 は、トランザクション クラスの静的 プロパティを呼び出すことによって、周囲の トランザクションへの参照を取得できます。

あなたはここでその詳細を読むことができます:

http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope(v=vs.90).aspx

をグレート(少し古い)トランザクションについての記事.NET 2.0

http://msdn.microsoft.com/en-us/library/ms973865.aspx