[.net] LINQ से एसक्यूएल बनाम इकाई फ्रेमवर्क


Answers

मुझे लगता है कि त्वरित और गंदा जवाब यह है

  • LINQ से SQL करने के लिए यह करने का तेज़ और आसान तरीका है। इसका मतलब है कि आप जल्दी जा रहे हैं, और अगर आप कुछ छोटे पर काम कर रहे हैं तो तेज़ी से पहुंचे।
  • एंटिटी फ्रेमवर्क इसे करने के लिए ऑल-आउट, नो-होल्ड-अवरुद्ध तरीका है। इसका मतलब है कि यदि आप कुछ बड़े काम कर रहे हैं तो आप अधिक समय ले लेंगे, धीरे-धीरे विकसित करेंगे, और अधिक लचीलापन लेंगे।
Question

अब .NET v3.5 SP1 जारी किया गया है (VS2008 SP1 के साथ), अब हमारे पास .NET इकाई ढांचे तक पहुंच है।

मेरा सवाल यह है। एक ओआरएम के रूप में इकाई फ्रेमवर्क और LINQ से SQL का उपयोग करने के बीच निर्णय लेने का प्रयास करते समय, क्या अंतर है?

जिस तरह से मैं इसे समझता हूं, एंटिटी फ्रेमवर्क (जब LINQ से Entities के साथ उपयोग किया जाता है) LINQ से SQL तक 'बड़ा भाई' है? यदि यह मामला है - इसमें क्या फायदे हैं? यह क्या कर सकता है कि LINQ से SQL अपने आप नहीं कर सकता है?




मेरी धारणा यह है कि यदि आपका लिंक Linq2Sql आपकी आवश्यकताओं के अनुरूप नहीं है तो आपका डेटाबेस बहुत ही भयानक या बहुत बुरी तरह से डिज़ाइन किया गया है। मेरे पास Linq2Sql का उपयोग करके लगभग 10 वेबसाइटें बड़े और छोटे दोनों हैं। मैंने कई बार देखा और इकाई फ्रेमवर्क देखा है लेकिन मुझे Linq2Sql पर इसका उपयोग करने का एक अच्छा कारण नहीं मिल रहा है। मैंने कहा कि मैं अपने डेटाबेस को मॉडल के रूप में उपयोग करने का प्रयास करता हूं, इसलिए मेरे पास मॉडल और डेटाबेस के बीच पहले से 1 से 1 मैपिंग है।

मेरे वर्तमान काम पर हमारे पास 200+ टेबल वाला डेटाबेस है। बहुत सारे पुराने समाधान वाले पुराने डेटाबेस, इसलिए मैं LINQ2Sql पर एंटीटी फ्रेमवर्क का लाभ देख सकता था लेकिन फिर भी मैं डेटाबेस को फिर से डिजाइन करना पसंद करूंगा क्योंकि डेटाबेस एप्लिकेशन का इंजन है और यदि डेटाबेस बुरी तरह डिज़ाइन किया गया है और धीमा है तो मेरा आवेदन धीमा भी होगा। ऐसे डेटाबेस पर एंटीटी फ्रेमवर्क का उपयोग करना खराब मॉडल को छिपाने के लिए एक क्विकफिक्स जैसा लगता है लेकिन यह ऐसे डेटाबेस से आपको खराब प्रदर्शन को कभी छिपा नहीं सकता है।




LINQ से एसक्यूएल

  1. समरूप डेटासोर्स: एसक्यूएल सर्वर
  2. छोटी परियोजनाओं के लिए अनुशंसित केवल तभी डेटा संरचना अच्छी तरह डिज़ाइन की गई है
  3. मैकिंग को SqlMetal.exe के साथ पुन: सम्मिलित किए बिना बदला जा सकता है
  4. .dbml (डेटाबेस मार्कअप भाषा)
  5. टेबल और कक्षाओं के बीच एक-से-एक मैपिंग
  6. TPH विरासत का समर्थन करता है
  7. जटिल प्रकार का समर्थन नहीं करता है
  8. भंडारण-पहला दृष्टिकोण
  9. डेटाबेस का डाटाबेस केंद्रित दृश्य
  10. सी # टीम द्वारा बनाया गया
  11. समर्थित लेकिन आगे के सुधारों का इरादा नहीं है

इकाई की रूपरेखा

  1. हीटरोजेनेस डेटासोर्स: कई डेटा प्रदाताओं का समर्थन करें
  2. सभी नई परियोजनाओं के लिए अनुशंसित:
    • छोटे वाले (LINQ से SQL)
    • जब डेटा स्रोत एक फ्लैट फ़ाइल (ADO.NET) है
  3. मैपिंग को मॉडलिंग और मैपिंग फाइलों को सेट करते समय पुन: सम्मिलित किए बिना बदला जा सकता है मेटाडेटा आर्टिफैक्ट प्रक्रिया आउटपुट निर्देशिका में कॉपी करने की प्रक्रिया
  4. .edmx (इकाई डेटा मॉडल) जिसमें निम्न शामिल हैं:
    • एसएसडीएल (स्टोरेज स्कीमा परिभाषा भाषा)
    • सीएसडीएल (अवधारणात्मक स्कीमा परिभाषा भाषा)
    • एमएसएल (मैपिंग विशिष्टता भाषा)
  5. तालिकाओं और कक्षाओं के बीच एक-से-एक, कई से एक मैपिंग
  6. विरासत का समर्थन करता है:
    • टीपीएच (प्रति पदानुक्रम तालिका)
    • टीपीटी (प्रति प्रकार तालिका)
    • टीपीसी (तालिका प्रति कंक्रीट कक्षा)
  7. जटिल प्रकार का समर्थन करता है
  8. कोड-फर्स्ट, मॉडल-फर्स्ट, स्टोरेज-पहला दृष्टिकोण
  9. डेटाबेस के अनुप्रयोग केंद्रित दृश्य
  10. एसक्यूएल सर्वर टीम द्वारा बनाया गया
  11. माइक्रोसॉफ्ट डेटा एपीआई का भविष्य

यह भी देखें:




उस लेख में उल्लिखित कई स्पष्ट मतभेद हैं @lars पोस्ट किया गया है, लेकिन संक्षिप्त जवाब है:

  • एल 2 एस कसकर युग्मित है - डेटाबेस के विशिष्ट क्षेत्र में ऑब्जेक्ट प्रॉपर्टी या एक विशिष्ट डेटाबेस स्कीमा पर मैपिंग का सही ढंग से ऑब्जेक्ट करें
  • एल 2 एस केवल SQL सर्वर के साथ काम करेगा (जहां तक ​​मुझे पता है)
  • ईएफ एक वर्ग को कई तालिकाओं में मैप करने की अनुमति देता है
  • ईएफ एमएम संबंधों को संभालेगा
  • ईएफ में किसी भी ADO.NET डेटा प्रदाता को लक्षित करने की क्षमता होगी

मूल आधार एल 2 एस रैपिड डेवलपमेंट के लिए है, और अधिक "एंटरप्राइज़" एन-स्तरीय अनुप्रयोगों के लिए ईएफ है, लेकिन यह एल 2 एस को थोड़ा छोटा बेच रहा है।




यदि आपका डेटाबेस सरल और सरल है, LINQ से SQL करेगा। यदि आपको अपनी टेबल के शीर्ष पर तार्किक / सारणीकृत इकाइयों की आवश्यकता है, तो इकाई फ्रेमवर्क के लिए जाएं।




LINQ से SQL और इकाई फ्रेमवर्क सतह पर समान दिखते हैं। वे दोनों एक डेटा मॉडल का उपयोग कर डेटाबेस के खिलाफ LINQ पूछताछ प्रदान करते हैं।

LINQ से SQL को LINQ प्रोजेक्ट से विकसित किया गया, जो भाषा विकास के साथ काम करने वाली टीम से बाहर आया। जबकि इकाई फ्रेमवर्क डेटा प्रोग्राममेबिलिटी टीम की एक परियोजना थी और एंटीटी एसक्यूएल भाषा पर केंद्रित थी। माइक्रोसॉफ्ट को LINQ से SQL को कम करने का कोई इरादा नहीं है।

LINQ से SQL अभी भी ADO.NET का हिस्सा है जबकि इकाई फ्रेमवर्क में अलग API है। इकाई ढांचा LINQ से SQL का उच्च संस्करण है। एंटीटी फ्रेमवर्क आपके एप्लिकेशन और आपके डेटा स्टोर के बीच ब्रिजिंग के लिए एंटीटी डेटा मॉडल का उपयोग करता है। यह एंटिटी डेटा मॉडल या ईडीएम है, जो आपके वैचारिक स्कीमा के साथ-साथ डाटाबेस स्कीमा जानकारी को डेटाबेस के साथ बातचीत करने के लिए आवश्यक है और आखिरकार मैपिंग स्कीमा जो दो से लिंक करता है।

एंटीटी फ्रेमवर्क (एंटिटी डेटा मॉडल) द्वारा किए गए कुछ कार्य यहां दिए गए हैं।

• मॉडल से कक्षाओं को स्वचालित रूप से उत्पन्न करता है और जब भी मॉडल बदलता है तो गतिशील रूप से उन वर्गों को अद्यतन करता है।

• सभी डेटाबेस कनेक्टिविटी का ख्याल रखता है ताकि डेवलपर्स डेटाबेस के साथ बातचीत के लिए बहुत सारे कोड लिखकर बोझ न हों।

• मॉडल से पूछताछ के लिए सामान्य क्वेरी सिंटैक्स प्रदान करता है, डेटाबेस नहीं, और फिर इन प्रश्नों को क्वेरी में समझता है जो डेटाबेस समझ सकता है।

• मॉडल की वस्तुओं में परिवर्तनों को ट्रैक करने के लिए एक तंत्र प्रदान करता है क्योंकि उनका उपयोग अनुप्रयोगों में किया जा रहा है और डेटाबेस को अद्यतनों को संभालता है।




मुझे लगता है कि अगर आपको मध्य में कोई अजीब चीज़ों के साथ कुछ जल्दी विकसित करने की आवश्यकता नहीं है, और आपको अपनी तालिकाओं का प्रतिनिधित्व करने वाली संस्थाओं की सुविधा की आवश्यकता है:

Linq2Sql एक अच्छा सहयोगी हो सकता है, इसका उपयोग LINQ के साथ एक महान विकासशील समय को उजागर करता है।







Links