आप निश्चित रूप से चीजों को भ्रमित करने वाले नहीं हैं। :-)
मुझे लगता है कि प्रश्न का उत्तर इस बात पर निर्भर करता है कि आप कितना शुद्ध बनना चाहते हैं।
यदि आप एक सख्त डीडीडी दृष्टिकोण चाहते हैं, तो यह आपको एक मार्ग पर ले जाएगा। यदि आप रिपॉजिटरी को एक पैटर्न के रूप में देखते हैं जिसने हमें उस परत के इंटरफेस को मानकीकृत करने में मदद की है जो सेवाओं और डेटाबेस के बीच अलग हो जाती है तो यह आपको एक और नीचे ले जाएगा।
मेरे दृष्टिकोण से रिपॉजिटरी डेटा तक पहुंच की स्पष्ट रूप से निर्दिष्ट परत है। दूसरे शब्दों में आपके डेटा एक्सेस लेयर को लागू करने के लिए एक मानकीकृत तरीका है। विभिन्न रिपॉजिटरी कार्यान्वयन के बीच कुछ अंतर हैं, लेकिन अवधारणा समान है।
कुछ लोग रिपॉजिटरी पर अधिक डीडीडी अवरोध डालेंगे, जबकि अन्य डेटाबेस और सेवा परत के बीच एक सुविधाजनक मध्यस्थ के रूप में रिपॉजिटरी का उपयोग करेंगे। एक DAL की तरह एक रिपॉजिटरी डेटा एक्सेस बारीकियों से सेवा परत को अलग करती है।
एक कार्यान्वयन मुद्दा जो उन्हें अलग बनाने के लिए लगता है, वह यह है कि एक रिपॉजिटरी अक्सर विनिर्देश बनाने वाले तरीकों के साथ बनाई जाती है। रिपॉजिटरी उस विनिर्देश को संतुष्ट करने वाला डेटा लौटाएगा। अधिकांश पारंपरिक डीएएल जो मैंने देखे हैं, में विधियों का एक बड़ा सेट होगा जहां विधि किसी भी संख्या में मापदंडों को ले जाएगी। हालांकि यह एक छोटे अंतर की तरह लग सकता है, यह एक बड़ा मुद्दा है जब आप Linq और भाव के दायरे में प्रवेश करते हैं। हमारा डिफ़ॉल्ट रिपॉजिटरी इंटरफ़ेस इस तरह दिखता है:
public interface IRepository : IDisposable
{
T[] GetAll<T>();
T[] GetAll<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter, List<Expression<Func<T, object>>> subSelectors);
void Delete<T>(T entity);
void Add<T>(T entity);
int SaveChanges();
DbTransaction BeginTransaction();
}
क्या यह डीएएल या भंडार है? इस मामले में मुझे इसका दोनों अनुमान है।
किम