निबर्ननेट + रिपोजिटरी पैटर्न के साथ लेने के लिए अनुशंसित दृष्टिकोण क्या है?एनएचबेर्नेट और रिपोजिटरी पैटर्न
इतने सारे अलग-अलग लेख और राय हैं कि मुझे यकीन नहीं है कि कौन सी पथ लेना है। उदाहरण के लिए Take this lengthy article। यह क्वेरी ऑब्जेक्ट का एक उदाहरण देता है, लेकिन प्रत्येक कंक्रीट रिपोजिटरी अपने कन्स्ट्रक्टर में ISession
स्वीकार करता है। मुझे अपने बीएल (बिजनेस लेयर) में एनएच सत्रों के बारे में क्या ख्याल रखना चाहिए?
खजाने का एक समूह बनाएं, उनमें से प्रत्येक के विशिष्ट विधियों का एक समूह हो रही है?
जाहिर है, यह बहुत अधिक काम है क्योंकि बीएल अब एनएचबेर्नेट (Repository is the new Singleton) से अवगत होने की अनुमति है?एक भी सामान्य भंडार बनाएं, लेकिन
IQueriable<T>
बेनकाब और हर अब
बीएल में LINQ का उपयोग करें और फिर वहाँ एक प्रश्न जो LINQ करने वाली NHibernate प्रोसेस करने में सक्षम नहीं होगा (या मैं बदलाव करने की जरूरत है एसक्यूएल मैन्युअल रूप से सौ प्रश्नों में एक बार)। यह कस्टम रेपो विधियों के साथ आसान है, लेकिन LINQ पर भरोसा कोड के साथ असंभव के बगल में। और दोनों का उपयोग सिर्फ इसलिए कि कुछ मामलों में LINQ टूट गया है बकवास है।क्वेरी ऑब्जेक्ट्स?
QueryOver
एनएच-विशिष्ट भी है, जिसका अर्थ है कि बीएल को फिर से डीएएल कार्यान्वयन के बारे में पता है।फिर भी एक और दृष्टिकोण?
जाहिर है, मैं (हालांकि वहाँ भी है कि के कई अलग अलग कार्यान्वयन के आसपास रहे हैं) शायद एक यूनिट के- काम पैटन का उपयोग कर लेनदेन कहीं प्रबंधन करने के लिए, सक्षम होना चाहिए।
क्या आप डीडीडी में भंडार के बारे में बात कर रहे हैं? – mathieu
@mathieu: हाँ। (मुझे यकीन नहीं है कि मैं कौन से अन्य भंडारों के बारे में सोच सकता हूं।) लेकिन अधिक आम तौर पर, मैं 2011 में लिखे गए एक ऐप को व्यवस्थित करने के लिए एक अनुशंसित तरीका ढूंढ रहा हूं, जिसमें सभी आधुनिक औजार और पैटर्न हैं। मैंने पहले कई तरीकों से एनएचबर्ननेट का उपयोग किया है, लेकिन मुझे नफरत है जब मुझे अपने बीएल में एनएच विशिष्ट वर्गों का संदर्भ देने की आवश्यकता है। और ऐसा लगता है कि यह कहना आम बात हो रहा है कि एनएच को अमूर्त करने की आवश्यकता नहीं है। – doe
@doe - निश्चित रूप से आपके एनएच-विशिष्ट वर्ग केवल आपकी डोमेन संस्थाएं हैं? अन्यथा आप संपत्ति की पर्याप्त मात्रा-डुप्लिकेशंस और मैपिंग देख रहे हैं। –