मैं मुख्य रूप से इस क्षेत्र में 2 ओआरएम के पेशेवरों और विपक्ष का निर्णय लेने की कोशिश कर रहा हूं। SQL सर्वर के साथएनएचबीर्नेट बनाम ईएफ 4.1+
- संगतता 2008 R2
- यह बहुत महत्वपूर्ण हम केवल मौजूदा एमएस प्रौद्योगिकी ढेर के गरीब समर्थन डिबग करने के लिए संसाधन नहीं के रूप में है।
- 2012 से भी आगे की योजना बनाना काफी अधिक है और इसमें माइग्रेट करने की योजना है। .NET 4.0 के लिए
- समर्थन और 4.5 (आगामी)
- फिर बहुत ज्यादा एक ही ऊपर कारण के लिए बहुत महत्वपूर्ण है।
- लेनदेन हैंडलिंग और तालिका संकेत उदाहरण के लिए। बलों के लिए फोर्ससेक, असम्मित पढ़ें।
- कई बार क्वेरी ऑप्टिमाइज़र अपनी नौकरी अच्छी तरह से करता है, अन्य बार मैं यह बताने की लचीलापन चाहता हूं कि क्या करना है।
- बातचीत के लिए समर्थन, आत्म ट्रैकिंग देते & अलग
- यह कुछ हद तक मौलिक है। मुझे लंबे समय तक सत्र खोलने से नफरत है। विशेष रूप से वितरित कंप्यूटिंग/वेब फार्म पर्यावरण में।
- डेटा को पहले नष्ट करने, डेटा को नष्ट किए बिना स्कीमा बनाने और अपडेट करने की क्षमता।
- ईएफ 4.1 इस संबंध में इच्छुक होना प्रतीत होता है, हालांकि 4.3 लीप और बेहतर बाध्य है। एनएच में अलग मैपिंग कक्षाओं की तुलना में डेटा एनोटेशन को बेहतर पसंद करते हैं। कारण मैं कक्षा में भेजने में सक्षम होना चाहता हूं और वहां से मैपिंग कक्षाओं के लिए विधि को चौड़ा किए बिना दृढ़ता मॉडल बनाने में सक्षम होना चाहिए। IRepository पैटर्न के लिए
- समर्थन LINQ के लिए
- समर्थन
- (6) ऊपर मैं चाहता हूँ LINQ के लिए वास्तव में अच्छा समर्थन करने के लिए कुछ हद तक बंधे। मैं डेवलपर्स निचले स्तर कार्यान्वयन के साथ चारों ओर गंदगी नहीं करना चाहती और हो रही है अपने आप को एक विशेष ORM
- थोक CRUD संचालन के लिए प्रदर्शन
- समर्थन करने के लिए अटक गया, अनुप्रयोग परत में डेटा लोड करने के लिए बिना। उदाहरण के लिए। मैं किसी विशेष तालिका के कॉलम में सभी पंक्तियों को 1 तक बढ़ा देना चाहता हूं। मैं इसे स्मृति में लोड नहीं करना चाहता हूं, और पंक्तियों को एक-एक करके बढ़ा सकता हूं। यह इतना आसान ऑपरेशन के लिए पागल हो जाएगा। Linq2Sql इस तरह की चीज को संभालने के लिए Magiq होता था, एनएच और ईएफ क्या करता है?
- कैशिंग, उत्सुक लोडिंग, आलसी लोडिंग, नेविगेशन गुण।
- मुझे स्पष्ट होने दो मुझे इन चीजों से नफरत करते समय नफरत है। कैश किया गया है, जो नया है उससे अलग है, इस बात को अलग करना मुश्किल है। ईएफ में मैं आमतौर पर सभी नेविगेशन गुणों को छोड़ देता हूं, क्योंकि मैं नहीं चाहता कि ये गुण शीर्ष 5 के साथ लोड हो जाएं, क्योंकि मौजूदा ऑपरेशन की यही आवश्यकता है, लेकिन स्ट्रीम के आगे एक और डेवलपर गिनती करने का प्रयास करता है जो गलत होगा।
- तो मेरी व्यक्तिगत नीति - सभी एसओए स्टेटलेस होंगे जब तक अन्यथा कोई अच्छा कारण न हो। यदि आपको डेटा संदर्भित करने की आवश्यकता है, तो इसे दृढ़ता से प्राप्त करें। यह धीमा हो जाएगा लेकिन कोड अधिक पठनीय और लचीला होगा।
- इसी तरह कैशिंग के लिए। यह काफी जटिल है क्योंकि यह वितरित वातावरण में है, मैं चाहता हूं कि सभी कैशिंग बहुत स्पष्ट हों। यदि कोई डेवलपर कैश के खिलाफ कोड करना चाहता है, तो ऐसा करना चाहिए, ओआरएम के खिलाफ कोड नहीं, और ऐसा लगता है कि वह दृढ़ता से ताजा डेटा खींच रहा है जब वास्तव में उसे पुराना डेटा मिल रहा है।
- अब सवाल यह है कि, एनएचबर्ननेट में कोई अवधारणा/अमूर्तता है जो कैशिंग, उत्सुक/आलसी लोडिंग को ईएफ में वर्तमान में उपलब्ध एक से अधिक स्पष्ट बनाती है। इस मामले में मुझे विकास की आसानी के बारे में ज्यादा परवाह नहीं है, मुझे स्पष्टता और स्पष्टता के बारे में अधिक परवाह है। मैं
इसके अलावा ओएसएस बनाम मालिकाना तर्क के लिए ज्यादा परवाह नहीं है। टीम हुड के नीचे देखने और अन्य लोगों के कोड के साथ गड़बड़ शुरू करने का समय बर्दाश्त नहीं कर सकती है। मुझे किसी और चीज की तुलना में "यह सिर्फ काम करता है" कोण के बारे में अधिक परवाह है।
खैर लिखा सवाल है, हालांकि मैं अपने Linq-बयान में उपयोग करने के लिए लिख सकते हैं डर यह एसओ के लिए थोड़ा सा खुला है; यहां प्रश्न आमतौर पर/अक्सर कुछ स्रोत कोड होते हैं, और स्पष्ट, व्यावहारिक उत्तरों का कारण बनना चाहिए। शायद यह प्रोग्रामर के लिए बेहतर अनुकूल है। एसई? – Jeroen