2009-04-29 5 views
2

llblgenでトランザクションを管理する主なオプションが2つあることがわかります。LLBLGen - TransactionScopeまたはDataAccessAdapter.StartTransaction

方法1:

using(DataAccessAdapter adapter = new DataAccessAdapter()) 
{ 
    adapter.StartTransaction(IsolationLevel.ReadCommitted, "TR"); 
    try 
    { 
     // ... 
     adapter.Commit(); 
    } 
    catch 
    { 
     adapter.Rollback(); 
     throw; 
    } 
} 

方法2:

using(TransactionScope scope = new TransactionScope()) 
{ 
    // ... 
    scope.Complete(); 
} 

お好みの方法とその理由は何ですか? (私はadapapter/2.6を使用しています.net/3.5)

答えて

1

私はトランザクションを作成するために設計されたものなので、トランザクション管理のためにTransactionScopeを使う傾向がありますが、DataAccessAdapterはトランザクションを作成する能力を持っていますデータアクセス。

TransactionScopeを使用して、複数のDataAccessAdapter間で複数のトランザクションを管理し、単一のDataAccessAdapterが特定の有効範囲を持つように見えるようにすることができます。例えば

using(TransactionScope ts = new TransactionScope()) 
{ 
    using(DataAccessAdapter d1 = new DataAccessAdapter()) 
    { 
     //do some data access stuff 
    } 
    using(DataAccessAdapter d2 = new DataAccessAdapter()) 
    { 
     //do some other data access stuff 
    } 
    ts.complete(); 
} 

別のサイドノートではDataAdaptersではないところとして、TransactionScopeのは、スレッドセーフであるということです。

+0

あなたの経験上、TransactionScopeは期待どおりに機能していますか?それにはほとんどありませんが、私はまだ問題があるかどうか疑問に思っています。 – JeremyWeir

+0

私はいつものように働いていましたが、ドコを読んで、それが何をしているのか、特に入れ子になっているトランザクションスコープオブジェクトや複数のトランザクションについて、理解することをお勧めします。 – lomaxx

関連する問題