यह मेरे प्रश्न here पर अवधारणा से संबंधित है। हालांकि, मैं एनएचबेर्नेट के साथ खेल रहा हूं, और महसूस किया कि मेरे प्रश्न का असली मूल क्या है।क्या कोई भी .NET ORM रचनाकारों का "ठीक से" उपयोग करता है?
क्लासिक ओओ डिज़ाइन में, डेटा को सही ढंग से समाहित करने के लिए, डेटा के सदस्यों (फ़ील्ड) में संग्रहीत ऑब्जेक्ट के कन्स्ट्रक्टर में मानों को पास करने के लिए यह एक सामान्य पैटर्न है। उन मानों को नहीं बदला जाना चाहिए केवल एक्सेसर्स (केवल-पढ़ने योग्य गुण) के संपर्क में हैं। जिन लोगों को बदलने की अनुमति है वे दोनों एक्सेसर्स और म्यूटेटर (रीड-राइट प्रॉपर्टीज) हैं। मुझे लगता है कि उचित ओ/आरएम इन सम्मेलनों का सम्मान करना चाहिए, और ऑब्जेक्ट बनाते समय उपलब्ध कन्स्ट्रक्टर का उपयोग करना चाहिए। रीड-राइट गुणों, प्रतिबिंब, या अन्य पर निर्भर करते हुए, हैकिश (आईएमएचओ) विधियां ... गलत लगती हैं।
क्या वहां कोई .NET ओ/आरएम समाधान है जो ऐसा करता है?
संपादित
प्रवीण की दृष्टि से निपटने के लिए मुझे पता है कि परियोजनाओं एक निर्माता चुनने के लिए एक 'डिफ़ॉल्ट' एल्गोरिथ्म है कि हैं कि - StructureMap, उदाहरण के लिए, हमेशा सबसे तर्क, जब तक साथ निर्माता का उपयोग करता है आप एक कस्टम विशेषता के साथ एक निर्माता चिह्नित करते हैं। मैं यह स्थिति को संभालने का एक प्रभावी तरीका देख सकता हूं। शायद के अलावा आईओसी कंटेनर का उपयोग करना ओआरएम मुझे जिस तरह की समाधान की आवश्यकता है, प्रदान करेगा - हालांकि मुझे ऐसा लगता है कि यह स्वाभाविक रूप से खराब नहीं है, ओआरएम का उपयोग करने के लिए एक अनावश्यक अतिरिक्त कदम है।
एक और दिलचस्प सवाल है: क्या कन्स्ट्रक्टर में कुछ व्यावसायिक तर्क शामिल हो सकते हैं? अर्थात। जब मैं कक्षा ए का उदाहरण बनाता हूं तो इसका कन्स्ट्रक्टर लगातार कक्षा बी का उदाहरण बना सकता है और इसे निजी सेटर के साथ संपत्ति में असाइन कर सकता है। –
@Alex: मेरा लक्ष्य है कि डोमेन ऑब्जेक्ट्स अज्ञान रहें। डोमेन ऑब्जेक्ट से एक दृढ़ता ऑब्जेक्ट बनाने के लिए तर्क होने का उल्लंघन करता है, और दृढ़ता से डोमेन ऑब्जेक्ट को दृढ़ता विधि पर जोड़ता है - एक और खराब बात। –