Database.BeginTransaction बनाम Transactions.TransactionScope


91

System.Transactions.TransactionScopeऔर EF6 के बीच क्या अंतर है Database.BeginTransaction?

क्या कोई एक छोटा सा उदाहरण दे सकता है या सिर्फ यह बता सकता है कि स्पष्ट अंतर के साथ कौन सा उपयोग करना है?

पुनश्च: मेरी परियोजना में, मैं EF6 का उपयोग कर रहा हूँ। मैंने पहले ही प्रलेखन पढ़ा है, लेकिन यह बहुत मदद नहीं करता है। उदाहरणों को भी देखा, लेकिन वे उपयोग कर रहे हैं SqlConnection.BeginTransactionऔर अब MS ने Database.BeginTransactionEF6 में यह नया पेश किया है ।

जवाबों:


99

मुझे एंटिटी फ्रेमवर्क 6 के दस्तावेज में इसका उत्तर मिला:

EF6 की शुरुआत के साथ, Microsoft नए एपीआई तरीकों का उपयोग करने की सिफारिश करता है: Database.BeginTransaction()और Database.UseTransaction()। हालांकि System.Transactions.TransactionScopeअभी भी बहुत अच्छी तरह से समर्थित है, यह EF6 के अधिकांश उपयोगकर्ताओं के लिए आवश्यक नहीं है ।

जबकि Database.BeginTransaction()इसका उपयोग केवल डेटाबेस से संबंधित संचालन लेनदेन के लिए किया जाता है System.Transactions.TransactionScope, इसके अलावा, यह 'प्लेन सी # कोड' के लिए भी संभव बनाता है।

इसलिए, Database.BeginTransaction()EF6 में लेन-देन में केवल db संबंधित प्रचालन करने का उपयोग करें System.Transactions.TransactionScope, अन्यथा db प्रचालन और C # कोड को एक साथ मिलाने के लिए उपयोग करें ।

उन लोगों के लिए जो अभी भी TransactionScopeदृष्टिकोण को पसंद करते हैं , यह अनुशंसा की जाती है कि वे इसकी सीमाओं की जांच करें, विशेष रूप से क्लाउड परिदृश्यों में (क्लाउड परिदृश्य वितरित लेनदेन का समर्थन नहीं करते हैं)।

आगे की जानकारी यहाँ मिल सकती है


12
दुर्भाग्य से, आप Database.BeginTransaction के साथ लेनदेन नहीं कर सकते, जबकि आप TransactionScope के साथ कर सकते हैं।
त्रिनको

8
वास्तव में '' सादे सी # कोड '' का भी क्या मतलब है?
गेरार्ड

@ मैं मानता हूं कि इसका मतलब है कि यदि आप EF के बाहर SQL संचालन करते हैं (जैसे ADO.NET का उपयोग करके), तो वे संचालन भी उसी लेनदेन के तहत होंगे।
रुडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.