2009-04-29 24 views
2

我發現有兩個主要選項用於管理與llblgen的事務。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(); 
} 

從另一個方面說明的是,TransactionScope的是線程安全的,那裏的DataAdapters都沒有。

+0

在您的經驗中,TransactionScope總是像您期望的那樣工作?它幾乎沒有,但我仍然想知道是否有任何陷阱。 – JeremyWeir 2009-04-30 01:01:45