उदाहरण: लेन-देन का उपयोग करना, और केवल तभी प्रतिबद्ध होना जब दी गई शर्त पूरी हो।

using (var transaction = context.Database.BeginTransaction())
    // ...
    if (modelState.IsValid) {
        transaction.Commit();
    }
}

क्या यह होना आवश्यक है:

using (var transaction = context.Database.BeginTransaction())
    // ...
    if (modelState.IsValid) {
        transaction.Commit();
    } else {
        transaction.Rollback();
    }
}

या else भाग की कोई आवश्यकता नहीं है। यदि मैं निर्दिष्ट नहीं करता तो क्या होता है? कोई अच्छा दिशानिर्देश?

0
DDan 20 जुलाई 2017, 11:36
msdn "लेन-देन शुरू करने के लिए यह आवश्यक है कि अंतर्निहित स्टोर कनेक्शन खुला है। इसलिए Database.BeginTransaction() को कॉल करने से कनेक्शन खुल जाएगा यदि यह पहले से नहीं खुला है। यदि DbContextTransaction ने कनेक्शन खोला है तो डिस्पोज़ () को कॉल करने पर यह इसे बंद कर देगा।
 – 
Sergey
20 जुलाई 2017, 11:53

1 उत्तर

सबसे बढ़िया उत्तर

आपको रोलबैक को मैन्युअल रूप से कॉल करने की आवश्यकता नहीं है क्योंकि आप कथन का उपयोग कर रहे हैं। Rollback को स्पष्ट रूप से कॉल करना आवश्यक नहीं है। यदि Commit() को कॉल नहीं किया गया है, तो लेन-देन वापस ले लिया जाएगा।

DbContextTransaction.Dispose यूजिंग ब्लॉक के अंत में मेथड को कॉल किया जाएगा। और यदि लेनदेन सफलतापूर्वक प्रतिबद्ध नहीं है तो यह स्वचालित रूप से लेनदेन को वापस ले लेगा

3
Ali Adlavaran 20 जुलाई 2017, 11:47