मैं इकाई ढांचे का उपयोग कर एक डीएएल लागू कर रहा हूँ। हमारे आवेदन पर, हमारे पास तीन परतें हैं (डीएएल, व्यापार परत और प्रस्तुति)। यह एक वेब ऐप है। जब हमने डीएएल को लागू करना शुरू किया, तो हमारी टीम ने सोचा कि डीएएल में कक्षाएं होनी चाहिए जिनकी विधियों को व्यावसायिक परत पर सेवाओं द्वारा दिए गए ऑब्जेक्ट कॉन्टेक्स्ट प्राप्त होते हैं और इसे संचालित करते हैं। इस फैसले के पीछे तर्क यह है कि विभिन्न ऑब्जेक्ट कॉन्टैक्स अलग-अलग डीबी राज्यों को देखते हैं, इसलिए विदेशी कुंजी मिलान और अन्य असंगतताओं के साथ समस्याओं के कारण कुछ परिचालनों को खारिज कर दिया जा सकता है।क्या डीटीओ प्लस यूनिटऑफवर्क पैटर्न एक वेब अनुप्रयोग के लिए एक डीएएल डिजाइन करने के लिए एक अच्छा दृष्टिकोण है?
हमने देखा है कि सेवा परत से ऑब्जेक्ट संदर्भ उत्पन्न करना और प्रसार करना परतों के बीच उच्च युग्मन उत्पन्न करता है। इसलिए हमने ऑटोमैपर द्वारा मैप किए गए डीटीओ का उपयोग करने का निर्णय लिया (अप्रबंधित संस्थाओं या उच्च युग्मन संस्थाओं को उच्च युग्मन बहस करने, ऊपरी परतों और कम दक्षता में इकाइयों को उजागर करने) और यूनिटऑफवर्क। तो, यहां मेरे प्रश्न हैं:
- क्या यह वेब अनुप्रयोग के डीएएल को डिजाइन करने का सही दृष्टिकोण है? क्यूं कर?
- यदि आपने "हाँ" को 1 का उत्तर दिया है, तो इसे यूनिटऑफवर्क पैटर्न के साथ डीटीओ की अवधारणा को कैसे सुलझाया जा सकता है?
- यदि आपने "नहीं" का उत्तर दिया है, जो वेब अनुप्रयोग के लिए डीएएल डिज़ाइन करने का सही दृष्टिकोण हो सकता है?
यदि संभव हो, तो कृपया अपने उत्तर का समर्थन करने वाली ग्रंथसूची दें।
वर्तमान डिजाइन के बारे में:
आवेदन तीन परतों पर विकसित करने की योजना कर दिया गया है प्रस्तुति, व्यापार और दाल। बिजनेस लेयर में दोनों facades और सेवाएं
आईट्रांसक्शन नामक एक इंटरफ़ेस है (परिवर्तनों को निपटाने और सहेजने के लिए केवल दो विधियों के साथ) केवल सेवाओं पर दिखाई देता है। एक लेनदेन का प्रबंधन करने के लिए, ऑब्जेक्ट कॉन्टेक्स्ट और आईट्रांसैक्शन को विस्तारित करने वाली कक्षा लेनदेन होती है। हमने इसे ध्यान में रखकर डिजाइन किया है कि व्यापार परत पर हम अन्य ऑब्जेक्ट कॉन्टेक्स्ट विधियों को सुलभ नहीं करना चाहते हैं।
डीएएल पर, हमने दो सामान्य प्रकारों (इकाई के लिए एक और दूसरा इसके संबंधित डीटीओ के लिए) का उपयोग करके एक सार भंडार बनाया। इस भंडार में सीआरयूडी विधियों को एक सामान्य तरीके से लागू किया गया है और डीटीओ और ऑटोमैपर के साथ सामान्य भंडार की इकाइयों को मैप करने के लिए दो सामान्य तरीकों को लागू किया गया है। अमूर्त भंडारक कन्स्ट्रक्टर एक आईट्रांसैक्शन को तर्क के रूप में लेता है और यह अपेक्षा करता है कि यह इट्रानैक्शन को ऑब्जेक्ट कॉन्टेक्स्ट होने के लिए ऑब्जेक्ट कॉन्टेक्स्ट संपत्ति को असाइन करने के लिए ऑब्जेक्ट कॉन्टेक्स्ट हो।
कंक्रीट भंडार केवल प्राप्त करना चाहिए और .NET प्रकार और डीटीओ वापस करना चाहिए।
अब हम इस समस्या का सामना कर रहे हैं: बनाने के लिए जेनेरिक विधि संलग्न इकाइयों के लिए एक अस्थायी या लगातार आईडी उत्पन्न नहीं करती है (जब तक हम SaveChanges()
का उपयोग नहीं करते हैं, इसलिए लेनदेन को तोड़ना चाहते हैं); इसका मतलब यह है कि बीएल में डीटीओ को जोड़ने के लिए सेवा विधियों का उपयोग नहीं किया जा सकता है)
कृपया प्रश्न का अंतिम संस्करण देखें ... धन्यवाद! – JPCF
बकाया लिंक ...! – JPCF