2013-08-28 8 views
5

मैं here रूपरेखा के रूप में एकाधिक डीडीडी बाध्य संदर्भों को लागू करने की कोशिश कर रहा हूं।डीडीडी बाध्य संदर्भों के साथ इकाई कॉन्फ़िगरेशन प्रबंधन

Sample Context

मैं उपयुक्त FluentAPI मैपिंग के साथ प्रत्येक इकाई के लिए एक इकाई प्रकार विन्यास फाइल है (एफई टूलींग का उपयोग कर इंजीनियर रिवर्स): यह एक उदाहरण संदर्भ है। इन कॉन्फ़िगरेशन फ़ाइलों में रिलेशनशिप कॉन्फ़िगरेशन भी शामिल है।

उदा .: UserMap.cs

// Relationships 
this.HasOptional(t => t.SecurityProfile) 
    .WithMany(t => t.Users) 
    .HasForeignKey(t => t.SecurityProfileCode); 

SecurityProfile और DomainPermission संदर्भ में DbSets नहीं हैं। User और Module पर नेविगेशन गुणों के कारण उन्हें स्वचालित रूप से मॉडल में लाया जाता है।

यह मेरा पहला मुद्दा बनता है। (और इकाई पर हर दूसरे संबंध)

  1. इसके अलावा SecurityProfile के लिए मॉडल बिल्डर के लिए विन्यास जोड़ने: जब किसी अन्य संदर्भ के लिए User (या किसी भी अन्य संस्था) जोड़ने मैं दो चीजों में से एक करने के लिए याद है,

  2. मॉडल से SecurityProfile को किसी भी तरह से मॉडल से बाहर निकालें।

यह रखरखाव दुःस्वप्न का थोड़ा सा बनने वाला है।

मैं उपरोक्त बिंदु 2 में उल्लिखित इकाई ग्राफ को स्पष्ट रूप से "ट्रिम" करने से संतुष्ट होगा।

हालांकि यह Ignore() इकाइयों के लिए प्रतीत नहीं होता है जब संबंधों को पहले से ही कॉन्फ़िगरेशन फ़ाइलों में परिभाषित किया जा रहा है।

उपरोक्त संदर्भ OnModelCreating के लिए कोशिश कर रहा modelBuilder.Ignore<SecurityProfile>();ConfigureAssociations() में निम्न त्रुटि देता है:

System.InvalidOperationException: नेविगेशन संपत्ति 'SecurityProfile' पर प्रकार 'उपयोगकर्ता' एक घोषित संपत्ति नहीं है। सत्यापित करें कि इसे मॉडल से स्पष्ट रूप से बाहर नहीं रखा गया है और यह एक वैध नेविगेशन प्रॉपर्टी है।

एकमात्र समाधान जो मैं सोच सकता हूं वह बेस कॉन्फ़िगरेशन कक्षाओं का उत्तराधिकारी है और प्रत्येक संदर्भ में संबंध कॉन्फ़िगरेशन को ओवरराइड करना है। ध्यान में रखते हुए हम 30-40 + अलग संदर्भों के साथ समाप्त हो सकते हैं यह एक रखरखाव दुःस्वप्न भी बन सकता है।

वैकल्पिक रूप से मेरे पास प्रत्येक संदर्भ के लिए बहुत विशिष्ट इकाई मॉडल हो सकते हैं, लेकिन फिर से यह इकाई वर्ग विस्फोट और डुप्लिकेट कॉन्फ़िगरेशन में संभावित रखरखाव समस्या का कारण बन जाएगा।

बाध्य संदर्भों को लागू करते समय मैं इकाइयों और उनकी इकाई कॉन्फ़िगरेशन का सर्वोत्तम प्रबंधन और रखरखाव कैसे कर सकता हूं?

+2

अजीब है कि कोई [ईएफ प्रोजेक्ट साइट] (http://entityframework.codeplex.com/discussions) पर विचार करने के लिए मतदान करेगा, "आपके आवेदन में एंटीटी फ्रेमवर्क का उपयोग करने के बारे में प्रश्नों के लिए कृपया स्टैक ओवरफ़्लो का उपयोग करके एक प्रश्न पोस्ट करें इकाई-फ्रेमवर्क टैग। " –

+0

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

+0

@jgauffin मुझे 3 प्रश्नों को 3 प्रश्नों को कम करने में खुशी होगी। हालांकि यह एक सरल "मैं यह कैसे कर सकता हूं" प्रश्न नहीं है और पृष्ठभूमि की जानकारी सभी 3 प्रश्नों के लिए उपयोगी है। इसलिए "बहुत व्यापक" होने का कारण वैध आईएमओ नहीं है क्योंकि एसओ इन प्रकार के प्रश्न पूछने के लिए अनुशंसित आउटलेट है। शायद यह ओपन सोर्स प्रोजेक्ट्स के साथ एक समस्या है जो एसओ को अपने समुदाय चैनल के रूप में अपहरण कर रही है। लेकिन किसी अन्य विकल्प के बिना प्रतीत होता है, यह एकमात्र आउटलेट है जिसे मैं प्रतिक्रिया प्राप्त करने की उम्मीद कर रहा हूं। आपके सुझाव के जवाब में –

उत्तर

0

यहाँ एक सा होने के कारण बहुत लंबा टिप्पणी के लिए जोड़ा गया:

यह अत्यंत (संयुक्त राष्ट्र है?) यह ध्यान देने योग्य है कि जिस लेख का आप उल्लेख कर रहे हैं वह स्पष्ट रूप से एक नया buzzword DDD का उल्लेख करके बैंडविगॉन पर कूदने की कोशिश कर रहा है और इसके बाद यह दिखाता है कि किसी संदर्भ में डीटीओ/पीओसीओ ऑब्जेक्ट्स को कैसे रखा जा सकता है। डीडीडी करने के लिए इसमें बिल्कुल कुछ नहीं है।

डोमेन संचालित डिजाइन प्राथमिक रूप से व्यवहार और encapsulated (बुनियादी ढांचे अलग/अज्ञानी) मॉडल के बारे में है जो विशिष्ट अभिनेताओं के लिए विशिष्ट समस्याओं को हल करने के लिए पुनरावृत्त और परिष्कृत हैं और जो समस्या डोमेन के ubiquitous language में व्यक्त किए जाते हैं।

ये मॉडल आम तौर पर किसी प्रकार के दृढ़ता मॉडल पर सीधे मानचित्र नहीं खाते हैं, न ही उन्हें इससे चिंतित होना चाहिए। एक सीमाबद्ध संदर्भ के भीतर कुल जड़ों पर किए गए संचालन आम तौर पर लेनदेन सीमाओं के साथ संरेखित होंगे।

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

+0

मैंने तब से पढ़ा है [यह] (http://www.infoq.com/minibooks/domain-driven-design-quickly) इवान्स ने अपने डीडीडी का सारांश समर्थित किया किताब, और पूरी तरह से अपने बिंदु देखें।हालांकि यह सब कुछ ध्यान में रखते हुए, मेरा मॉडल वास्तव में तकनीक स्वतंत्र है और किसी बिंदु पर इसे डेटाबेस में जारी रखने की आवश्यकता है। डीआरवाई सिद्धांत को बनाए रखने के दौरान यह उस दृढ़ता रणनीति का प्रबंधन है जिसे मैं उत्तर के लिए देख रहा हूं। विभिन्न मॉडलों में "समान" इकाइयां रखने के साथ-साथ विभिन्न संबंधों के साथ नकल संबंधी मुद्दों और एक संभावित भावी रखरखाव सिरदर्द का कारण बन रहा है। –

+0

@ ब्रेटपोस्टिन आप अभी भी मेरे द्वारा उल्लेखित वेबकास्ट पर एक नज़र डालना चाहते हैं, मुझे विश्वास है कि वे आंख खोलने वाले हैं (मैंने अभी जांच की है और दुर्भाग्यवश 2008 से उनके उत्कृष्ट परिचय वीडियो और उनके अन्य Google दस्तावेज़ होस्ट किए गए कलाकार चले गए हैं, लेकिन कम से कम घड़ी यह, यह केवल 15 मिनट है और एरिक के कुछ हालिया अनुभवों और विचारों को व्यक्त करता है: http://skillsmatter.com/podcast/design-architecture/welcome-eric-evans)। – Alex

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