आम तौर पर, यदि आप अन्य सच्चाई परतों (जैसे ActiveRecord या DAO) के विपरीत "सत्य" रिपोजिटरी पैटर्न का उपयोग कर रहे हैं, तो आपको अपने डोमेन समेकन की पहचान करना और कुल योग एक संग्रह बनाना चाहिए।
इसका क्या अर्थ है? खैर, यह आपके ऐप पर बहुत निर्भर करता है, लेकिन आम तौर पर ऐसी वस्तुएं होती हैं जो स्वाभाविक रूप से अन्य वस्तुओं के 'माता-पिता' हैं, या जो संबंधित लेनदेन का हिस्सा हैं।
मुझे लगता है कि कैननिकल उदाहरण एक ईकॉमर्स सिस्टम है जिसमें आपके पास ऑर्डर की अवधारणा है, और एक क्रम में आपके ऑर्डरलाइन में कुछ ऑर्डरलाइन कुछ उत्पाद और मात्रा है, और इसी तरह।
उस स्थिति में, ऑर्डर ऑब्जेक्ट सिस्टम की कुल जड़ों में से एक है और ऑर्डर रिपोजिटरी बनाई गई है।
उस मामले में याद करने के लिए बात वहाँ एक आदेश और उसके अवधियाँ और इतने पर में कुछ संबंध है (अंतर्निहित या अन्यथा) कर रही है। इसलिए रिपोजिटरी पर "सीआरयूडी" के सी-यूडी भागों को आम तौर पर केवल एक विधि होना चाहिए, और आम तौर पर उस समग्र रूट ऑब्जेक्ट का उदाहरण लेना चाहिए और उस पर काम करना चाहिए (.e.g। Repo.Save (ऑर्डर))। अन्य संभावित पैरा वहां हो सकते हैं, लेकिन यह आपके प्रभाव पर निर्भर करता है।
वास्तव में, आप अक्सर सी-यूडी भाग w/विरासत में से अधिकांश को हल कर सकते हैं (यानी एक रिपोजिटरीबेस बनाते हैं जो आपके विशेष दृढ़ता योजना के लिए शॉउडल के बारे में कुछ ज्ञात तर्क का उपयोग करके उन्हें लागू करता है)।
तो यह हमें सीआरयूडी का आर हिस्सा छोड़ देता है। यदि आप क्वेरी विधि मार्ग पर जाना चुनते हैं तो इस मामले में आपको क्वेरी विधियों का एक टन मिल सकता है (GetById; GetByName; GetByCustomerName, आदि)। कुछ लोग सरल ऐप्स के लिए विशेष रूप से पसंद करते हैं, जो एक linq- आधारित इंटरफ़ेस (उदा। एक IQueryable GetAll()) का खुलासा करते हैं, जिसके बाद क्लॉज लागू हो सकते हैं।YMMV उस पर आपके अंतर्निहित दृढ़ता के आधार पर, लेकिन यह सरल ऐप्स, esp के लिए एक ठोस शॉट है। यदि आप अपने दृढ़ता प्रदाता से सीधे linq का समर्थन करने की उम्मीद करते हैं।
आखिरकार, कई लोग वास्तव में क्वेरी इंपैक्टेशन को एक इम्प्लांटेशन या कमांड क्वेरी जिम्मेदारी पृथक्करण पैटर्न के माध्यम से अलग करते हैं, जो कहता है कि जारी रखने और पूछताछ के लिए इंटरफेस अलग होना चाहिए। उस स्थिति में, आपके पास एक रेपो होगा जिसमें केवल मूल सीआरयूडी (GetById, GetAll, Save, Delete) ops और किसी अन्य प्रकार की दूसरी श्रेणी है जो आपके ऐप के इरादों के आधार पर चीजों से पूछताछ करती है।
आशा है कि मदद करता है।
पॉल
पौलुस उस विस्तृत उत्तर के लिए धन्यवाद। बहुत सोचा और पढ़ने के बाद, मुझे लगता है कि आप प्रति रूट एक भंडार/सेवा के साथ स्पॉट पर हैं। आप सीआरयूडी के बारे में भी सही हैं, सी_यूडी के लिए प्रत्येक विधि और आर के कई तरीके आर। आपके ऑर्डर उदाहरण में, ऑर्डर रेपॉजिटरी ऑर्डरलाइन और ऑर्डरसबलाइन के लिए आर विधियों को रखने का स्थान भी होगा? – bradjive
यह एक अच्छा सवाल है, और यह निर्भर करता है। ऑर्डरलाइन और sublines वास्तव में कुछ भी उनके संबंधित आदेश w/o उपयोगी उपयोगी मतलब है? यदि ऐसा है, तो हाँ, यदि नहीं, तो आपके सभी प्रश्नों को डब्ल्यू/ऑर्डर करना होगा और आप INumerables पर नियमित LINQ अभिव्यक्तियों का उपयोग करके बाल संग्रह को फ़िल्टर कर सकते हैं। – Paul