سؤال

وأرى هناك خياران رئيسيان لإدارة المعاملات مع 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 صافي / 3.5)

هل كانت مفيدة؟

المحلول

وأود أن تميل إلى استخدام TransactionScope لإدارة المعاملات لأن هذا هو ما صممت من أجله في حين أن DataAccessAdapter، في حين أنه لديه القدرة على خلق المعاملات وتهدف في المقام الأول لDataAccess.

لمحاولة ويكون قليلا أكثر وضوحا، هل يمكن استخدام TransactionScope لإدارة المعاملات متعددة عبر DataAccessAdapters متعددة في حين يظهر على 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 ليست كذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top