LLBLGen - TransactionScope или DataAccessAdapter.StartTransaction - PullRequest
2 голосов
/ 30 апреля 2009

Я вижу, что есть два основных варианта управления транзакциями с помощью llblgen.

Метод 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 Ответ

1 голос
/ 30 апреля 2009

Я бы предпочел использовать TransactionScope для управления транзакциями, поскольку это то, для чего он был разработан, тогда как DataAccessAdapter, в то время как он способен создавать транзакции, предназначен в первую очередь для DataAccess.

Чтобы попытаться быть более понятным, вы можете использовать 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 - нет.

...