NHBernate बनाम LINQ से एसक्यूएल


Answers

दो बिंदु जो अब तक चूक गए हैं:

  • LINQ से SQL Oracle या SqlServer के अलावा किसी भी डेटाबेस के साथ काम नहीं करता है। हालांकि तीसरे पक्ष ओरेकल के लिए बेहतर समर्थन प्रदान करते हैं, उदाहरण के लिए devArt का डॉटकनेक्ट , डीबीएलएनक , माइंडस्केप ALinq और ALinq (मेरे पास इनके साथ कोई व्यक्तिगत अनुभव नहीं है)

  • लिंक से एनएचबर्ननेट आपको लिनक को निहिबेरेट के साथ उपयोग करने देता है, इसलिए यह उपयोग करने के लिए कोई कारण नहीं हटा सकता है।

निबर्ननेट के लिए नया धाराप्रवाह इंटरफेस भी निबर्ननेट के मैपिंग को कॉन्फ़िगर करने के लिए कम दर्दनाक बनाता है। (निबर्ननेट के दर्द बिंदुओं में से एक को हटा रहा है)

अद्यतन करें

Nhiberate v3 में Linq से Nhiberate बेहतर है जो अब alpha । ऐसा लगता है कि इस वर्ष के अंत में निहिबेरेट वी 3 जहाज भेज सकता है।

.NET 4 के रूप में एंटीटी फ़्रेम कार्य भी एक वास्तविक विकल्प की तरह दिखना शुरू कर रहा है।

Question

किसी ऐसे व्यक्ति के रूप में जिसने वास्तविक दुनिया की परियोजनाओं पर या तो तकनीक का उपयोग नहीं किया है, मुझे आश्चर्य है कि अगर कोई जानता है कि ये दोनों एक दूसरे के पूरक हैं और उनकी कार्यक्षमताओं का कितना ओवरलैप है?




LINQ द्वारा, मुझे लगता है कि आपका मतलब LINQ से SQL है क्योंकि LINQ, स्वयं के पास, इसके साथ जुड़े "गोइंग ऑन" डेटाबेस नहीं है। यह सिर्फ एक प्रश्न भाषा है जिसमें एसक्यूएल-आईएसएच देखने के लिए सिंटैक चीनी का नाव-भार होता है।

मूलभूत बुनियादी उदाहरणों में, एनएचबेर्नेट और LINQ से SQL दोनों एक ही समस्या को हल करने लगते हैं। एक बार जब आप पास हो जाते हैं तो आपको जल्द ही एहसास हो जाता है कि NHibernate में कई विशेषताओं के लिए समर्थन है जो आपको वास्तव में समृद्ध डोमेन मॉडल बनाने की अनुमति देता है। NHQernate प्रोजेक्ट के लिए एक LINQ भी है जो आपको LINQ का उपयोग NHBernate से पूछताछ करने के लिए करता है जैसा कि आप LINQ से SQL का उपयोग करेंगे।




या आप Castle ActiveRecords प्रोजेक्ट का उपयोग कर सकते हैं। मैं विरासत परियोजना के लिए कुछ नए कोड को रैंप करने के लिए थोड़े समय के लिए इसका उपयोग कर रहा हूं। यह एनएचबीर्नेट का उपयोग करता है और सक्रिय रिकॉर्ड पैटर्न पर काम करता है (आश्चर्यजनक नाम जो मुझे पता है)। मैंने कोशिश नहीं की है, लेकिन मुझे लगता है कि एक बार जब आप इसका इस्तेमाल कर लेंगे, तो आपको सीधे एनएचबीरनेट समर्थन को छोड़ने की आवश्यकता महसूस होती है, तो यह आपके भाग या आपकी सभी परियोजनाओं के लिए ऐसा करने के लिए बहुत कुछ नहीं होगा।




Fluent NHibernate सरल सम्मेलनों के आधार पर आपकी मैपिंग फ़ाइलों को उत्पन्न कर सकता है। कोई एक्सएमएल-लेखन और दृढ़ता से टाइप नहीं किया गया।

मैंने हाल ही में एक परियोजना पर काम किया है, जहां हमें प्रदर्शन कारणों से लिंक से एसक्यूएल में एनएचबीरनेट में बदलने की जरूरत है। वस्तुओं को भौतिक बनाने के विशेष रूप से एल 2 एस का तरीका एनएचबेर्नेट के डिट्टो से धीमा लगता है और परिवर्तन प्रबंधन भी काफी धीमा है। और विशिष्ट परिदृश्यों के लिए परिवर्तन प्रबंधन को बंद करना मुश्किल हो सकता है जहां इसकी आवश्यकता नहीं है।

यदि आप डेटा कॉन्टेक्स्ट से डिस्कनेक्ट की गई अपनी इकाइयों का उपयोग करने जा रहे हैं - उदाहरण के लिए डब्ल्यूसीएफ परिदृश्यों में - आपको परिवर्तनों को अपडेट करने के लिए डेटाकॉन्टेक्स्ट से कनेक्ट करने में बहुत सारी समस्या हो सकती है। मुझे एनएचबेर्नेट के साथ कोई समस्या नहीं है।

जिस चीज को मैं एल 2 एस से याद करूंगा वह ज्यादातर कोड जनरेशन है जो संस्थाओं के दोनों सिरों पर संबंधों को अद्यतित रखता है। लेकिन मुझे लगता है कि NHibernate के लिए कुछ उपकरण भी ऐसा करने के लिए हैं ...




Links