एंटिटी फ्रेमवर्क (मेरे मामले में पहले कोड) का उपयोग करके, मेरे पास एक ऑपरेशन है जिसके लिए मुझे SaveBanges को डीबी में एक ऑब्जेक्ट को अपडेट करने के लिए कॉल करने की आवश्यकता है, और फिर SaveChanges को फिर से किसी अन्य ऑब्जेक्ट को अपडेट करने के लिए। (मुझे किसी समस्या को हल करने के लिए पहले SaveChanges की आवश्यकता है जहां EF यह पता नहीं लगा सकता कि कौन सा ऑब्जेक्ट पहले अपडेट करना है)।ईएफ: मैं एक लेनदेन के अंदर दो बार SaveChanges को कैसे कॉल करूं?
using (var transaction = new TransactionScope())
{
// Do something
db.SaveChanges();
// Do something else
db.SaveChanges();
tramsaction.Complete();
}
जब मैं चलने वाले, मैं कह रहा "अंतर्निहित प्रदाता खुला पर विफल" दूसरा SaveChanges
कॉल पर एक अपवाद हो,:
मैं कर की कोशिश की। आंतरिक अपवाद का कहना है कि मेरी मशीन पर एमएसडीटीसी सक्षम नहीं है।
अब, मैंने अन्य जगहों को पोस्ट किया है जो वर्णन करते हैं कि एमएसडीटीसी को कैसे सक्षम किया जाए, लेकिन ऐसा लगता है कि मुझे नेटवर्क एक्सेस इत्यादि को सक्षम करने की भी आवश्यकता होगी। यह पूरी तरह से ओवरकिल की तरह लगता है, क्योंकि इसमें कोई अन्य डेटाबेस शामिल नहीं है, चलो अकेले अन्य सर्वर। मैं ऐसा कुछ नहीं करना चाहता जो मेरा पूरा एप्लिकेशन कम सुरक्षित (या धीमा) करने जा रहा है।
निश्चित रूप से ऐसा करने का एक और हल्का तरीका होना चाहिए (आदर्श रूप से एमएसडीटीसी के बिना) ?!
आप एसक्यूएल 2008 का उपयोग कर रहे जोड़ने की जरूरत है? आपके वास्तविक तर्क के आधार पर, आप आगे बढ़ने के बिना कई कनेक्शन खोल सकते हैं। डीटीसी को बुलाए जाने पर यहां एक शानदार पोस्ट तोड़ दी गई है: [लेनदेन का दायरा स्वचालित रूप से एमएसडीटीसी में बढ़ रहा है] (http: // stackoverflow।कॉम/प्रश्न/16908 9 2/लेन-देन-स्वचालित रूप से-एस्केलेटिंग-टू-एमएसडीटीसी-ऑन-मशीनों) –
यदि आप केवल एक लेनदेन में सब कुछ करना चाहते हैं तो सब कुछ एक बार सहेजने या सब कुछ बचाने के बीच क्या अंतर है? दोनों मामलों में या तो सब कुछ बचाया जाएगा या कुछ भी बचाया नहीं जाएगा, इसलिए मुझे एकाधिक बचत का कोई फायदा नहीं दिख रहा है। नीचे दी गई टिप्पणी के अनुसार - एसक्यूएल सर्वर 2005 में एक लेनदेन के भीतर कई कनेक्शन खोलने (यहां तक कि यदि स्रोत समान है) लेनदेन को एक वितरित लेनदेन के रूप में बढ़ावा दिया जाता है। यह एसक्यूएल सर्वर 2008 में सुधार हुआ था, जहां आप प्रोमोशन – Pawel
@markoreta के बिना एक ट्रैक्स के भीतर एक ही डेटासोर्स में एकाधिक कनेक्शन खोल सकते हैं: मैं SQL सर्वर 2012 का उपयोग कर रहा हूं। मेरे पास एकाधिक कनेक्शन नहीं हैं (और चाहते हैं) वास्तव में एमएसडीटीसी का उपयोग नहीं करना चाहता! –