के लिए डीआई (कन्स्ट्रक्टर इंजेक्शन) के लिए डिज़ाइनिंग रिपॉजिटरीज IoC और कन्स्ट्रक्टर इंजेक्शन का उपयोग करने की कोशिश कर रहा हूं, मैं एक एमवीसी 3 ऐप बना रहा हूं। मेरे डेटाबेस में (अब तक) लगभग 50 टेबल हैं। मैं अपने डीएसी कोड के लिए ईएफ 4 (डब्ल्यू/पीओसीओ टी 4 टेम्पलेट) का उपयोग कर रहा हूं। मैं भंडार पैटर्न का उपयोग कर रहा हूं, और प्रत्येक तालिका का अपना भंडार है। मेरी सेवा परत में मेरी सेवा कक्षाओं को इन/भंडारों को इंजेक्शन दिया जाता है।सेवा परत
समस्या: मेरी सेवा कक्षाएं उन्हें आवश्यक भंडारों की संख्या में बढ़ रही हैं। कुछ मामलों में, मैं 10 भंडारों तक पहुंच रहा हूं, और यह गंध शुरू हो रहा है।
क्या रिपोजिटरी और सेवा कक्षाओं को डिजाइन करने के लिए कोई आम दृष्टिकोण है कि सेवाओं को इतनी सारी रिपॉजिटरीज़ की आवश्यकता नहीं है?
यहाँ मेरे विचार कर रहे हैं, मैं तो बस यकीन नहीं है जो एक सही है कर रहा हूँ:
1) यह एक संकेत है कि मैं संयोजन/तालिकाओं के संबंधित वर्गों में मेरी खजाने समूहीकरण, संख्या या निर्भर खजाने को कम करने पर विचार करना चाहिए है प्रति सेवा वर्ग। हालांकि, इस दृष्टिकोण के साथ समस्या यह है कि यह मेरे भंडारों को फटकार और जटिल करेगा, और मुझे सभी भंडारों (डेटा पुनर्प्राप्ति/अद्यतन के लिए मानक विधियों) के लिए एक सामान्य इंटरफ़ेस का उपयोग करने में सक्षम होने से रोक देगा।
2) यह एक संकेत है कि मुझे अपने भंडारों (तालिकाओं) के आधार पर समूहों में अपनी सेवाओं को तोड़ने पर विचार करना चाहिए। इसके साथ समस्या यह है कि मेरी कुछ सेवा विधियां आम कार्यान्वयन साझा करती हैं, और कक्षाओं में इन्हें तोड़ने से मेरी निर्भरता जटिल हो सकती है।
3) यह एक संकेत है कि मुझे नहीं पता कि मैं क्या कर रहा हूं, और कुछ मौलिक रूप से गलत है कि मैं देखने में भी सक्षम नहीं हूं।
अद्यतन: कैसे मैं EF4 और खजाने को लागू कर रहा हूँ की एक विचार के लिए, codeplex पर this sample app की जाँच (मैं version 1 प्रयुक्त)। हालांकि, वहां कुछ टिप्पणियों को देखते हुए (और यहां), ऐसा लगता है कि मुझे यह सुनिश्चित करने के लिए थोड़ा और पढ़ने की ज़रूरत है कि यह वह मार्ग है जिसे मैं लेना चाहता हूं - ऐसा लगता है कि ऐसा नहीं हो सकता है।
ईएफ 4, या 4.1? भंडार पैटर्न और कार्य की इकाई 4.1 में 'डीबीकॉन्टेक्स्ट' टेम्पलेट में संदर्भ में बनाई गई है (ठीक है, शायद टेम्पलेट में एक-लाइनर ट्विक के साथ ...) –
ईएफ 4 (4.1 नहीं)। क्या मुझे 4.1 पर जाने पर विचार करना चाहिए? माइग्रेट करना कितना मुश्किल है? –
आपको अपना पुराना टेम्पलेट/मॉडल कोड पीढ़ी फेंकना होगा, और एक नया टेम्पलेट जेनरेट करना होगा, लेकिन कक्षा के नाम समान होंगे। वह हिस्सों बस कुछ क्लिक। आपके संदर्भ (और शायद डेटा सेट पर) के कुछ आधार विधियां तोड़ जाएंगी, और यह इस बात पर निर्भर करती है कि आप कितने तरीकों का उपयोग करते हैं, इस पर निर्भर करता है कि प्रभाव कितना बड़ा होगा। मेरा मानना है कि अधिकतर तर्क को स्वैप करने के बजाय, वे अधिकतर एक पाठ परिवर्तन होंगे। –