सबसे पहले, यदि आप एक नया प्रोजेक्ट शुरू कर रहे हैं, तो Entity Framework ("EF") के साथ जाएं - यह अब बहुत बेहतर SQL उत्पन्न करता है (Linq to SQL do जैसा) और इसे बनाए रखना आसान है और Linq से SQL की तुलना में अधिक शक्तिशाली है (" L2S ")। .NET 4.0 की रिलीज के अनुसार, मैं Linq को SQL की एक अप्रचलित तकनीक मानता हूं। एमएस L2S विकास को आगे नहीं बढ़ाने के बारे में बहुत खुला है।
1) प्रदर्शन
यह जवाब देने के लिए मुश्किल है। अधिकांश एकल-इकाई संचालन ( CRUD ) के लिए आपको सभी तीन तकनीकों के साथ समान प्रदर्शन के बारे में पता चलेगा। आपको यह जानना होगा कि EF और Linq SQL को उनके पूर्ण रूप से उपयोग करने के लिए कैसे काम करते हैं। मतदान संबंधी प्रश्नों जैसे उच्च-मात्रा संचालन के लिए, आप अपनी इकाई क्वेरी EF / L2S को "संकलित" करना चाह सकते हैं, ताकि रूपरेखा को लगातार SQL को पुनर्जीवित न करना पड़े, या आप स्केलेबिलिटी समस्याओं में भाग सकें। (संपादन देखें)
बल्क अपडेट के लिए जहां आप भारी मात्रा में डेटा अपडेट कर रहे हैं, कच्ची SQL या एक संग्रहीत प्रक्रिया हमेशा ORM समाधान से बेहतर प्रदर्शन करेगी क्योंकि आपको अपडेट करने के लिए ORM के तार पर डेटा को मार्शल नहीं करना पड़ता है।
2) विकास की गति
ज्यादातर परिदृश्यों में, EF विकास की गति की बात आने पर नग्न SQL / संग्रहित प्रोक्स को उड़ा देगा। EF डिज़ाइनर आपके डेटाबेस से आपके मॉडल को अपडेट कर सकता है क्योंकि यह (अनुरोध पर) बदलता है, इसलिए आप अपने ऑब्जेक्ट कोड और अपने डेटाबेस कोड के बीच सिंक्रनाइज़ेशन समस्याओं में नहीं चलते हैं। केवल उसी समय जब मैं ORM का उपयोग करने पर विचार नहीं करूंगा, जब आप रिपोर्टिंग / डैशबोर्ड प्रकार का अनुप्रयोग कर रहे हों, जहाँ आप कोई अद्यतन नहीं कर रहे हों, या जब आप डेटाबेस पर कच्चे डेटा रखरखाव कार्य करने के लिए केवल एक अनुप्रयोग बना रहे हों।
3) नीट / मेंटेनेंस कोड
हाथ नीचे, EF SQL / sprocs धड़कता है। क्योंकि आपके रिश्ते मॉडलिंग कर रहे हैं, आपके कोड में शामिल होने के कारण अपेक्षाकृत कम हैं। अधिकांश प्रश्नों के लिए संस्थाओं के रिश्ते पाठक के लिए लगभग स्व-स्पष्ट हैं। वास्तव में आपके डेटा का क्या हो रहा है, यह समझने के लिए टियर से टीयर डीबगिंग या मल्टीपल SQL / मिडिल टियर के माध्यम से जाने से कुछ नहीं होता है। ईएफ आपके डेटा मॉडल को आपके कोड में बहुत शक्तिशाली तरीके से लाता है।
4) लचीलापन
स्टोर किए गए प्रोक्स और कच्चे एसक्यूएल अधिक "लचीले" हैं। आप विषम विशिष्ट मामले के लिए तेजी से पूछताछ उत्पन्न करने के लिए स्प्रोक्स और एसक्यूएल का लाभ उठा सकते हैं, और आप ओआरएम और ओआरएम की तुलना में आसानी से देशी डीबी कार्यक्षमता का लाभ उठा सकते हैं।
5) कुल मिलाकर
संग्रहीत प्रक्रियाओं का उपयोग करके ORM बनाम चुनने का झूठा द्वंद्ववाद में मत फंसो। आप एक ही अनुप्रयोग में दोनों का उपयोग कर सकते हैं, और आपको शायद करना चाहिए। बड़े थोक संचालन को संग्रहीत प्रक्रियाओं या एसक्यूएल (जिसे वास्तव में ईएफ द्वारा कहा जा सकता है) में जाना चाहिए, और ईएफ का उपयोग आपके सीआरयूडी संचालन और आपकी अधिकांश मध्य-स्तरीय आवश्यकताओं के लिए किया जाना चाहिए। शायद आप अपनी रिपोर्ट लिखने के लिए SQL का उपयोग करना चाहते हैं। मुझे लगता है कि कहानी का नैतिक रूप वैसा ही है जैसा वह हमेशा से रहा है। इस काम के लिए सही उपकरण का उपयोग करें। लेकिन यह पतला है, EF आजकल बहुत अच्छा है (.NET 4.0 के रूप में)। कुछ वास्तविक समय पढ़ने और इसे गहराई से समझने में बिताएं और आप आसानी से कुछ अद्भुत, उच्च प्रदर्शन वाले एप्लिकेशन बना सकते हैं।
संपादित करें : EF 5 ऑटो-संकलित LINQ क्वेरी के साथ इस हिस्से को थोड़ा सरल करता है , लेकिन वास्तविक उच्च मात्रा वाले सामान के लिए, आपको निश्चित रूप से परीक्षण और विश्लेषण करना होगा कि वास्तविक दुनिया में आपके लिए सबसे अच्छा क्या है।