आप वास्तव में सही हैं। DbContext
कार्य पैटर्न की इकाई का IDbSet
कार्यान्वयन है और रिपॉजिटरी पैटर्न का कार्यान्वयन है।
वर्तमान में रिपॉजिटरी बहुत लोकप्रिय हैं और इनका उपयोग किया जाता है। हर कोई उनका उपयोग सिर्फ इसलिए करता है क्योंकि संस्था के ढांचे के लिए भंडार बनाने के बारे में दर्जनों लेख हैं लेकिन कोई भी वास्तव में इस निर्णय से संबंधित चुनौतियों का वर्णन नहीं करता है।
भंडार का उपयोग करने के मुख्य कारण आमतौर पर हैं:
- ऊपरी परत से ईएफ छिपाएं
- कोड को बेहतर परीक्षण योग्य बनाएं
पहला कारण कुछ प्रकार की वास्तुशिल्प शुद्धता और महान विचार है कि यदि आप ईएफ पर अपनी ऊपरी परत को स्वतंत्र बनाते हैं तो आप बाद में अन्य दृढ़ता ढांचे पर स्विच कर सकते हैं। वास्तविक दुनिया में आपने ऐसा कितनी बार देखा? यह कारण ईएफ के साथ बहुत कठिन काम करता है क्योंकि आपकी रिपॉजिटरी को कई अतिरिक्त सुविधाओं को उजागर करना चाहिए जो ईएफ को डिफ़ॉल्ट रूप से अनुमति देता है।
एक ही समय में ईएफ कोड लपेटने से आपका कोड बेहतर व्यवस्थित रह सकता है और चिंता नियम के पृथक्करण के बाद। मेरे लिए यह रिपॉजिटरी और काम की इकाई का एकमात्र वास्तविक लाभ हो सकता है लेकिन आपको यह समझना होगा कि ईएफ के साथ इस नियम का पालन करने से शायद आपका कोड बेहतर बनाए रखने योग्य और बेहतर पठनीय हो सकता है लेकिन आपके आवेदन बनाने के शुरुआती प्रयास में बहुत अधिक होगा। छोटे अनुप्रयोगों के लिए यह अनावश्यक जटिलता हो सकती है।
दूसरा कारण आंशिक रूप से सही है। ईएफ का बड़ा नुकसान कठोर वास्तुकला है जिसे शायद ही कभी मॉक किया जा सकता है इसलिए यदि आप इकाई ऊपरी परत का परीक्षण करना चाहते हैं तो आपको ईएफ को किसी भी तरह से लपेटना चाहिए ताकि इसके कार्यान्वयन की अनुमति दी जा सके। लेकिन इसके कई अन्य परिणाम भी हैं जिनका मैंने यहां वर्णन किया है ।
मैं आयेंडे के ब्लॉग का अनुसरण करता हूं । यदि आपने कभी NHibernate का उपयोग किया है तो आप शायद उसके लेख जानते हैं। इस व्यक्ति ने हाल ही में NHibernate के साथ भंडार का उपयोग करने के खिलाफ कई लेख लिखे, लेकिन NHibernate बहुत बेहतर है।