पहला:कभी भी var ts = new TransactionScope()
का इस्तेमाल न करें . क्या एक लाइनर है जो आपके ऐप को मार देता है। हमेशा स्पष्ट निर्माता का उपयोग करें जो आपको अलगाव स्तर निर्दिष्ट करने देता है। नए TransactionScope () का उपयोग करना हानिकारक माना जाता है।
अब आपके प्रश्न के बारे में:डीटीसी में एक ही दायरे में दो कनेक्शनों को बढ़ावा नहीं देने का तर्क सिस्टम को सूचित करने के लिए सहयोग करने वाले ड्राइवर/प्रदाताओं पर बहुत अधिक निर्भर करता है। दो अलग-अलग कनेक्शन वितरित लेनदेन को प्रबंधित करने में सक्षम हैं क्योंकि यह अपने आप ठीक है क्योंकि शामिल संसाधन प्रबंधक समान हैं। एसक्यूएल क्लाइंट पोस्ट एसक्यूएल सर्वर 2008 एक ड्राइवर है जो इस तर्क को करने में सक्षम है। आपके द्वारा उपयोग किया जाने वाला Oracle ड्राइवर नहीं है (और मुझे किसी भी संस्करण के बारे में पता नहीं है, जो कि btw है)।
अंतत:वास्तव में वास्तव में वास्तव में बुनियादी है:यदि आप एक डीटीसी नहीं चाहते हैं, तो एक न बनाएं! सुनिश्चित करें कि आप दायरे में ठीक एक कनेक्शन का उपयोग करते हैं। यह स्पष्ट रूप से बहस योग्य है कि आपको दो कनेक्शनों की आवश्यकता नहीं है। दूसरे शब्दों में, अपने डेटा मॉडल में दो अलग-अलग रिपॉजिटरी से छुटकारा पाएं। ऑर्डर, इन्वेंटरी और अन्य क्या नहीं के लिए केवल एक रिपॉजिटरी का उपयोग करें। आप उनके साथ पैर में खुद को गोली मार रहे हैं और आप पिक्सी धूल समाधान मांग रहे हैं।
अपडेट करें:Oracle ड्राइवर 12c r1:
<ब्लॉककोट>"लेन-देन और कनेक्शन एसोसिएशन:ODP.NET कनेक्शन, डिफ़ॉल्ट रूप से, लेन-देन से तभी अलग होते हैं जब कनेक्शन ऑब्जेक्ट बंद हो जाते हैं या लेन-देन ऑब्जेक्ट का निपटान किया जाता है"