質問

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はそうではないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top