2012-03-22 17 views
6

मेरे पास एक भंडार है जो इंटरफ़ेस IRepository लागू करता है। भंडार इकाई फ्रेमवर्क (की ओर से) पर प्रश्न करता है और उत्पादित इकाई वस्तु को सीधे देता है।क्या इकाई वस्तुओं को भंडार द्वारा उजागर किया जाना चाहिए?

IRepository को लागू करने में पूरा बिंदु भविष्य में विभिन्न रिपॉजिटरीज़ के लिए स्विच किया जा सकता है। हालांकि, इकाई फ्रेमवर्क द्वारा लौटाए गए सटीक इकाई ऑब्जेक्ट्स को वापस करने से यह टूट जाएगा। क्या यह स्वीकार्य है?

इसलिए भंडार को सभी एंटीटी फ्रेमवर्क ऑब्जेक्ट्स को व्यावसायिक ऑब्जेक्ट्स में एप्लिकेशन को उजागर करने से पहले परिवर्तित करना चाहिए? क्या ऐसी वस्तुओं को एक इंटरफ़ेस लागू करना चाहिए या एक सामान्य आधार प्रकार होना चाहिए?

+1

आप 'अलग-अलग भंडार' का समर्थन करना चाहते हैं। क्या आपका मतलब ईएफ से एनएचबीरनेट में स्विच करना है? यदि ऐसा है, तो आप शायद आईरिपोजिटरी इंटरफ़ेस की तुलना में बहुत अधिक परिवर्तन करेंगे। –

+0

मैं विशेष रूप से कुछ भी नहीं सोच रहा था, लेकिन मैं चाहता हूं कि मेरा आवेदन मजबूत हो। आप क्या अन्य परिवर्तन सोच रहे हैं? –

उत्तर

10

भंडार इंटरफेस सिर्फ व्यापार/डोमेन संस्थाओं के साथ सौदा करना चाहिए, कि भंडार भेजता है और केवल एप्लिकेशन से जाना जाता वस्तुओं, वस्तुओं कि अंतर्निहित peristence पहुँच कार्यान्वयन से संबंधित नहीं हैं प्राप्त करता है।

ईएफ या निबर्ननेट इकाइयां दृढ़ता डेटा डोमेन वाले मॉडलिंग कर रहे हैं। इसलिए IRepository को ऑब्जेक्ट वापस नहीं करना चाहिए जो ओआरएम का कार्यान्वयन विवरण है, लेकिन एक ऑब्जेक्ट जिसे सीधे ऐप द्वारा उपयोग किया जा सकता है (या तो एक डोमेन इकाई या सरलीकृत दृश्य मॉडल, ऑपरेशन के आधार पर)।

भंडार कार्यान्वयन में, आप ओआरएम इकाइयों से निपटते हैं जिन्हें संबंधित ऐप इकाइयों (आमतौर पर ऑटोमैपर जैसे मैपर के साथ) में मैप किया जाएगा। लंबी कहानी छोटी है, जब आईरिपॉजिटरी को डिजाइन करना इसके कार्यान्वयन के बारे में भूल जाता है। यही कारण है कि यह तय करने से पहले इंटरफ़ेस को डिजाइन करना बेहतर है कि क्या/ओआरएम का उपयोग किया जाएगा या नहीं।

मूल रूप से, भंडार ऐप डोमेन संदर्भ और दृढ़ता संदर्भ के बीच प्रवेश द्वार है और ऐप को भंडार के कार्यान्वयन विवरण के साथ जोड़ा जाना चाहिए।

+0

+1 इस सवाल से पूछने के कारण की पुष्टि करता है –

1

आपको अपनी संस्थाओं को उत्पन्न करने के लिए पॉको टेम्पलेट्स में से किसी एक का उपयोग करना चाहिए। इस तरह आपकी संस्थाओं के पास इकाई फ्रेमवर्क पर कोई विशेष निर्भरता नहीं है, और परतों के बीच स्वतंत्र रूप से पारित किया जा सकता है। यह एक पूरी तरह से अलग डोमेन मॉडल को बनाए रखने और दोनों के बीच मैपिंग की तुलना में एक बहुत सारे प्रयासों को बचाता है (जब तक कि आपका डोमेन मॉडल आपके इकाई मॉडल से काफी अलग न हो, तब तक यह अधिक समझ में आता है)।

0

यदि आप पीओसीओ इकाइयों का उपयोग कर रहे हैं, तो आप यह मान सकते हैं कि कोई भी प्रदाता एक समान काम करेगा। साथ ही, याद रखें कि आप इकाइयों को वापस कर रहे हैं, जिनके गुण डेटाबेस में मैप किए गए हैं। तो आप यह मान सकते हैं कि जब तक प्रत्येक प्रदाता के लिए इकाइयों के पास अलग-अलग संपत्ति नाम नहीं होते हैं (मुझे अलग-अलग नाम रखने का तार्किक स्पष्टीकरण नहीं मिल रहा है), तो आप उन्हें सीधे भंडार से व्यवसाय में वापस कर सकते हैं।

संबंधित मुद्दे