2011-06-24 13 views
5

यदि आपने एंटिटी फ्रेमवर्क का उपयोग किया है तो आप जानते हैं कि ईडीएमएक्स अच्छा है। आप यह भी जानते हैं कि यह बड़ा और लगभग अप्रबंधनीय हो सकता है।डिज़ाइन निर्णय: एकाधिक ईएफ ईडीएमएक्स फ़ाइलें

जब यह बड़ा हो जाता है, तो यह दूसरा ईडीएमएक्स या तीसरा बनाने के लिए मोहक है - यहां तक ​​कि आपके डेटाबेस में प्रत्येक स्कीमा के लिए भी एक (उदाहरण के तौर पर)।

इस तरह का एक पृथक्करण आपके ईडीएमएक्स के संगठन के साथ मदद करेगा, लेकिन यह उसी नामस्थान में इकाइयों के संदर्भ को अलग कर सकता है।

इसके अलावा, पृथक ईडीएमएक्स फाइलें ऐसी स्थिति पैदा कर सकती हैं जहां ईडीएमएक्स फाइलों में जॉइन ऑपरेशन अत्यधिक, अनावश्यक डेटाबेस संचार में परिणाम देता है।

लेकिन तथ्य यह है कि ईडीएमएक्स जितना बड़ा होगा, उतना ही मुश्किल होगा। यह सुनिश्चित करना अधिक कठिन है कि यह सही है। तोड़ना आसान है।

क्या आप अपनी ईडीएमएक्स फ़ाइलों को अलग करते हैं? क्या आपके पास अंगूठे का नियम है जब यह कब होता है?

उत्तर

1

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

यदि आप अलग से बनाए रखना चाहते हैं तो आप स्वचालित रूप से ईडीएमएक्स को एक साथ विलय कर सकते हैं, लेकिन उन सभी के लिए एक संदर्भ खोलें और एक के रूप में पूछें। इसके लिए आवश्यक है कि वे एक ही नामस्थान साझा करें।

+0

मैं देखता हूं; परियोजनाओं में एक ईडीएमएक्स का पुन: उपयोग करना। यह EDMX को विभाजित करने का एक उचित कारण है। हमने अभी तक उस परिदृश्य को नहीं मारा है। –

1

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

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

कंटेनर ने हमारे IUnitOfWork इंटरफेस को लागू किया है, इसलिए मौजूदा कोडबेस में प्लग करना आसान था।

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