में बैचिंग डीबी कमांड्स मेरे वर्तमान प्रोजेक्ट को बाहरी सिस्टम के साथ हर रोज सिंक्रनाइज़ेशन की आवश्यकता होती है। सिंक्रनाइज़ेशन जटिल आयात फ़ाइल संरचना पर आधारित है जिसे व्यापक व्यावसायिक तर्क के साथ पार्स किया गया है और संसाधित किया गया है। व्यापार तर्क के कारण हमने इसे .NET कोड में बनाने और संग्रहित प्रक्रियाओं या एकीकरण सेवाओं में समान तर्क लिखने के बजाय मौजूदा बीएल घटकों का पुन: उपयोग करने का निर्णय लिया।इकाई फ्रेमवर्क 4.0
बीएल परत ईएफ 4.0 डेटा एक्सेस परत के शीर्ष पर बैठती है। वर्तमान कार्यान्वयन आयात बैच प्रक्रिया, ऑब्जेक्ट कॉन्टेक्स्ट में सभी परिवर्तनों को भरता है और लेनदेन में SaveChanges निष्पादित करता है। जब मैं एसक्यूएल प्रोफाइलर की जांच करता हूं तो मुझे लगता है कि ईएफ निष्पादित करता है प्रत्येक इकाई एकल एसक्यूएल कमांड के रूप में बदलती है (डीबी के लिए अपनी यात्रा के साथ)। इसके अलावा ऐसा लगता है कि इन आदेशों को पूरी तरह अनुक्रमिक रूप से निष्पादित किया गया है। तो मेरे पास प्रारंभिक आयात के लिए डेटाबेस के लिए 100,000 राउंडट्रिप्स और दैनिक सिंक्रनाइज़ेशन के लिए डेटाबेस में 10.000 - 50.000 राउंडट्रिप्स के बीच है।
क्या किसी भी तरह से ईएफ द्वारा या कुछ प्रदाता/एक्सटेंशन द्वारा आदेशों को सम्मिलित/अद्यतन/हटाएं?
तो मैं अपने वर्तमान समाधान के साथ रहूंगा क्योंकि समाधान को दोबारा लिखना एक विकल्प नहीं है। :( –
हां। ईएफ बैच काम के लिए डिज़ाइन नहीं किया गया है और विशेष रूप से "आयात बैच" जैसी कुछ चीज़ - एक डेटाबेस चिंता है, न कि ओआरएम चिंता। मैं इसके लिए ईएफ का भी उपयोग नहीं करूँगा, मेरे पास एक होगा अलग सेवा (उदाहरण के लिए डब्ल्यूसीएफ - विंडोज़ सेवा के रूप में होस्ट की गई) जिनकी एकमात्र ज़िम्मेदारी सिंक्रनाइज़ेशन की आवश्यकता होने पर इस थोक डेटा को आयात करना होगा। चिंताओं का पृथक्करण। मेरे पिछले प्रोजेक्ट को डीबी के हमारे और बाहरी के साथ सिंक्रनाइज़ करने की भी आवश्यकता है। हमने विंडोज़ सेवा (डब्ल्यूसीएफ से पहले) दिन) – RPM1984