2011-05-18 7 views
5

मैंने "मॉडल" फ़ोल्डर में एंटीटी फ्रेमवर्क डेटाकॉन्टेक्स्ट कक्षाओं के साथ कुछ परियोजनाएं देखी हैं, लेकिन चूंकि यह वास्तव में एक मॉडल नहीं है, यह सही नहीं लगता है।एएसपी.नेट एमवीसी में, मेरी एंटिटी-फ्रेमवर्क डेटा कॉन्टेक्स्ट क्लास डालने के लिए "सर्वश्रेष्ठ अभ्यास" स्थान (फ़ोल्डर) कहां है?

वर्तमान में मेरी DataContext (IDatabaseInitializer वर्ग के साथ) अपने प्रोजेक्ट की जड़ में रहते हैं, लेकिन यह है कि कीड़े मुझे भी।

वहाँ इस के लिए एक आम/सबसे अच्छा अभ्यास है, या मैं सिर्फ उन्हें जड़ या फ़ोल्डर डाटा या कुछ और कहा जाता है में छोड़ देना चाहिए?

उत्तर

3

तर्कसंगत यह मॉडल मॉडल है, क्योंकि यह आपके आवेदन की स्थिति को बनाए रखता है। यही कारण है कि लोग इसे वहां डाल देते हैं।

अपने एक अच्छा लड़का है और एक अमूर्त/भंडार परत का उपयोग करते हैं - यह वहाँ जाना चाहिए।

अपने नियंत्रकों एफई संदर्भ (बुरा विचार) के लिए सीधे बात कर रहे हैं, तो यह मॉडल फ़ोल्डर में रखा - शारीरिक रूप से कुछ अपने तार्किक सार संक्षेप नहीं छिपाने के लिए कोई जरूरत नहीं।

+0

जिस परियोजना पर मैं काम कर रहा हूं वह इतना आसान है, ईएफ संदर्भ को दूर करने से केवल गुणों/विधियों में परिणाम होता है जो संदर्भ को एक से एक में लपेटते हैं, इसलिए इस मामले में, यह अधिक होगा –

+0

असल में एक-टू- एक मैपिंग आमतौर पर खराब वास्तुकला और एक एनीमिक डोमेन मॉडल का संकेत है। लेकिन अगर आप एक साधारण परियोजना पर काम कर रहे हैं जहां नियंत्रक सीधे सीटीएक्स के साथ काम कर रहे हैं, तो इसे मॉडल फ़ोल्डर में रखें, या डेटा फ़ोल्डर बनाएं। – RPM1984

+0

मैं वास्तव में यह नहीं मानता कि यह एनीमिक डोमेन मॉडल का सुझाव क्यों देता है, न ही एक-एक-एक रैपिंग से बचने के लिए कैसे करें जब सभी पहुंच लगभग विशेष रूप से "ई में डीबी.इन्टिटी जहां ई.फिल्ड = वैल्यू" है:/ –

3

अन्य स्थानों मैं काम किया है पर, वी.एस. समाधान 3 परियोजनाओं में विभाजित किया गया: (। व्यवसाय तर्क वर्गों इंक POCO संस्थाओं)

  • प्रस्तुति (MVC साइट)
  • सेवा
  • भंडार (डाटा एक्सेस इंक। ईएफ डेटा संदर्भ)
+0

यह एक अच्छा मुद्दा है - हालांकि छोटे छोटे वेब ऐप्स के लिए, शायद यह थोड़ा अधिक है :-) –

+0

छोटी चीजों के लिए मैं आमतौर पर इसे केवल 'डेटा' या 'कक्षा \ डेटा' फ़ोल्डर में डालता हूं। –

4

इससे कोई फर्क नहीं पड़ता। मैंने इसे मॉडल फ़ोल्डर में रखा क्योंकि वह वह जगह है जहां सभी डेटाबेस सामान आते हैं।

2

हमारे डेटा संग्रह के साथ विभिन्न प्रोजेक्ट बनाएं, समाधान के लिए परियोजना को जोड़ने और इसे संदर्भ जहां की जरूरत है। रिपोजिटरी पैटर्न सुविधा के रूप में सुविधा में अपनी डेटा परत का परीक्षण और बदलने के लिए लाभ कमाता है।

देखें http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

+0

उस उदाहरण में भंडार केवल एक है एक मैपिंग के लिए। कुछ आसान के लिए, यह मुझे अधिक इंजीनियरिंग की तरह लगता है। –

3

मैं कहूँगा अपने सबसे अच्छा अभ्यास मॉडल में यह डाल करने के लिए, के रूप में यह MVC मॉडल के आधार पर वर्णन है और जैसा कि मैंने पिछले 3 महीने के लिए MVC पर काम कर रहा है मैं बहुत ज्यादा इस के लिए पक्ष में हूं ... प्लस यह जब ईएम कक्षाएं ...

1

इस पर बस अपने विचारों को कॉल करते समय ज्यादा लचीलापन प्रदान करता है; एंटिटी फ्रेमवर्क से जुड़े किसी भी वर्ग के लिए, जैसे डेटाकॉन्टेक्स्ट क्लास या बेस क्लास, हम इन्हें डेटाफ्रेमवर्क फ़ोल्डर में डालते हैं। सिद्धांत के रूप में जब वे इस संदर्भ में एंटिटीफ्रेमवर्क का विस्तार करते हैं, तो ऐसा कोई कारण नहीं है कि वे अन्य डेटाबेस ढांचे जैसे एनएचबेरनेट का विस्तार नहीं कर सके।

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