क्या कोई कृपया मुझे .NET में रिपॉजिटरी पैटर्न की व्याख्या कर सकता है, एक बहुत ही सरल उदाहरण या डेमो देकर कदम से कदम।
मुझे पता है कि यह एक बहुत ही सामान्य प्रश्न है लेकिन अभी तक मुझे संतोषजनक उत्तर नहीं मिला है।
क्या कोई कृपया मुझे .NET में रिपॉजिटरी पैटर्न की व्याख्या कर सकता है, एक बहुत ही सरल उदाहरण या डेमो देकर कदम से कदम।
मुझे पता है कि यह एक बहुत ही सामान्य प्रश्न है लेकिन अभी तक मुझे संतोषजनक उत्तर नहीं मिला है।
जवाबों:
सारांश के रूप में, मैं रिपॉजिटरी पैटर्न के व्यापक प्रभाव का वर्णन करूंगा। यह आपके सभी कोड को ऑब्जेक्ट्स का उपयोग किए बिना यह जानने की अनुमति देता है कि ऑब्जेक्ट्स कैसे बने हुए हैं। हठ के सभी ज्ञान, तालिकाओं से वस्तुओं तक मानचित्रण सहित, सुरक्षित रूप से भंडार में निहित हैं।
बहुत बार, आपको कोडबेस में बिखरे हुए एसक्यूएल क्वेश्चन मिलेंगे और जब आप टेबल पर एक कॉलम जोड़ने के लिए आएंगे तो आपको टेबल की कोशिश करने और खोजने के लिए कोड फाइल्स को खोजना होगा। बदलाव का असर दूरगामी है।
रिपॉजिटरी पैटर्न के साथ, आपको केवल एक ऑब्जेक्ट और एक रिपॉजिटरी को बदलना होगा। प्रभाव बहुत छोटा है।
शायद यह सोचने में मदद मिलेगी कि आप रिपॉजिटरी पैटर्न का उपयोग क्यों करेंगे। यहाँ कुछ कारण हैं:
आपके पास अपनी डेटा पहुंच में परिवर्तन करने के लिए एक ही स्थान है
आपके पास तालिकाओं के एक सेट के लिए एक ही स्थान है (आमतौर पर)
परीक्षण के लिए एक नकली कार्यान्वयन के साथ एक रिपॉजिटरी को बदलना आसान है - इसलिए आपको अपने यूनिट परीक्षणों के लिए डेटाबेस उपलब्ध होने की आवश्यकता नहीं है
अन्य लाभ भी हैं, उदाहरण के लिए, यदि आप MySQL का उपयोग कर रहे थे और SQL सर्वर पर स्विच करना चाहते थे - लेकिन मैंने वास्तव में इसे अभ्यास में कभी नहीं देखा है!
IConnection
, ICommand
, आदि बात यह है कि खाल डेटाबेस के प्रकार के। रिपॉजिटरी आमतौर पर अधिक डोमेन-केंद्रित है।
यह एक अच्छा उदाहरण है: C # में रिपोजिटरी पैटर्न उदाहरण
असल में, रिपॉजिटरी इस बात का ब्योरा छिपाती है कि डेटाबेस से / के लिए डेटा को वास्तव में कैसे लाया जा रहा है / कैसे जारी रखा जा रहा है। गुप्त रखना:
IDbContext
) या ISession
सीधे nberberate ( ) में दिए गए इंटरफेस का उपयोग करने की तुलना में बिल्कुल भी कोई लाभ नहीं देता है । एक सही ढंग से लागू किया गया रिपॉजिटरी एब्सट्रैक्ट दूर सभी दृढ़ता विशिष्ट जानकारी (जैसे कि वर्तमान लाइनक एसक्यूएल प्रदाता कैसे काम करता है)। यानी कभी उजागर नहीं IQueryable
।
IQueryable
दृढ़ता विशिष्ट जानकारी नहीं है। IQueryable का समर्थन एक कठिन कोडित सरणी के रूप में सरल हो सकता है, या यह एक XML फ़ाइल, वेब सेवा, डेटाबेस, फ्लैट फ़ाइल आदि से हो सकता है, मैं एक रिपॉजिटरी की सिफारिश नहीं करूंगा जो IQueryable को हमेशा के लिए उजागर नहीं करता है हर मामले में धीमी गति से डेटा एक्सेस की ओर जाता है, जहां IQueryable को उजागर करना कुछ उदाहरणों को प्रदर्शन संवर्द्धन करने की अनुमति देगा जहां लागू होता है अगर दृढ़ता स्टोर में वह क्षमता है। इसके अतिरिक्त, DbContext को छुपाना आपको एक अलग ORM पर स्विच करने की अनुमति देता है अगर जरूरत हो (या ORM नहीं!)
IN
विशिष्ट LinqToSql प्रदाता यह कैसे करता है यह जानने के बिना उत्सुक / आलसी लोडिंग या एक sql क्लॉज का उपयोग करने का प्रयास करें ।