LLBLGen-TransactionScopeまたはDataAccessAdapter.StartTransaction
-
03-07-2019 - |
質問
llblgenでトランザクションを管理するための2つの主なオプションがあると思います。
方法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を使用しています)
解決
DataAccessAdapterは主にDataAccess向けに設計されていますが、DataAccessAdapterはその目的であるため、トランザクションの管理にTransactionScopeを使用する傾向があります。
もう少し明確にするために、TransactionScopeを使用して、単一のDataAccessAdapterが特定のスコープを持つように見えながら、複数のDataAccessAdaptersにわたる複数のトランザクションを管理できます。
例:
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();
}
もう1つの注意点は、TransactionScopeはスレッドセーフですが、DataAdaptersはそうではないことです。
所属していません StackOverflow