2009-11-08 22 views
5

कई उत्पाद डेवलपर एक .NET एप्लिकेशन लिखना चाहते हैं जो SQL सर्वर, ऑरैकल, डीबी 2, माइस्क्ल जैसे किसी भी लोकप्रिय आरडीबीएमएस के साथ निर्बाध रूप से काम करेगा। यदि हम डेटा एप्लिकेशन ब्लॉक का उपयोग करते हैं तो यह गतिशील रूप से कॉन्फ़िगरेशन के आधार पर डेटाबेस ड्राइवर (OracleClient, SQLClient या OleDBClient) को चुनता है।डाटाबेस तटस्थ .NET अनुप्रयोग

हालांकि, सभी डेटाबेस में एसक्यूएल के अपने स्वाद हैं। सूक्ष्म मतभेद हैं जो एक एसक्यूएल कोड बेस को सार्वभौमिक रूप से इस्तेमाल करने से रोकते हैं - फ़ंक्शन नाम अलग हैं, जिस तरह से तारीखों को संभाला जाता है, वैसे ही पहचान कॉलम हैंडल अलग-अलग होते हैं।

कोई डेटा डायरेक्ट से किसी तृतीय पक्ष उत्पाद का उपयोग पूर्व परिभाषित भागने के क्रम में डीबी तटस्थ कोड लिखने के लिए कर सकता है।

क्या माइक्रोसॉफ्ट से कोई उपकरण या उत्पाद हैं जो इस समस्या को हल करते हैं?

उत्तर

12

Microsoft ADO.NET Entity Framework माइक्रोसॉफ्ट से Object-Relational Mapping फ्रेमवर्क है जो आपको कोड लिखने के लिए डिज़ाइन किया गया है (कुछ हद तक) डीबी-अज्ञेयवादी। सभी प्रमुख डीबीएमएस के पास एंटिटी फ्रेमवर्क के लिए समर्थन है, हालांकि कई (उदा। MySQL, पोस्टग्रेज़) के लिए आपको अपने .NET Framework इंस्टॉल से कुछ अलग डाउनलोड करने की आवश्यकता होगी।

नोट: मुझे अभी तक एक ओ/आरएम उपकरण का उपयोग करके एक बड़ी परियोजना पर काम करना है, जहां कम से कम एक मामला नहीं था जहां हमें देशी एसक्यूएल में खोलना पड़ा - या तो डीबी-विशिष्ट कार्यक्षमता के लिए या प्रदर्शन कारण (एक अच्छी क्वेरी योजना प्राप्त करने के लिए किसी विशेष तरीके से एक प्रश्न लिखने की आवश्यकता है)। लेकिन एसक्यूएल लिखने से रोकने के लिए एक अच्छा ओ/आरएम ज्यादातर समय काम कर सकता है।

जिसके अनुसार, इकाई की रूपरेखा के वर्तमान संस्करण सुंदर NHibernate, SubSonic, आदि जैसे dimensions-- अन्य ओ/आर एम चौखटे की एक संख्या में सीमित है और अधिक परिपक्व है, जहां "परिपक्व" का अर्थ है एक गहरी श्रृंखला का समर्थन कर रहे हैं देशी एसक्यूएल, व्यापक सामुदायिक समर्थन, बेहतर प्रदर्शन इत्यादि के बिना डीबीएमएस फीचर्स के बिना

यह कहने का मेरा विनम्र तरीका है कि, वास्तविक दुनिया के लिए, अपेक्षाकृत जटिल परियोजना, मुझे नहीं लगता कि एंटिटी फ्रेमवर्क का वर्तमान संस्करण उपलब्ध अन्य ओ/आरएम उपकरणों के सापेक्ष जाने का सबसे अच्छा तरीका है।

जाहिर है, आने वाले .NET 4.0/VS2010 version of the Microsoft Entity Framework में काफी सुधार हुआ है, इसलिए ऊपर दिया गया बयान अगले वर्ष सच नहीं हो सकता है। नई इकाई फ्रेमवर्क डीडीएल के लिए समर्थन जोड़ता है, उदाहरण के लिए, ताकि आप डीबीएमएस-स्वतंत्र तरीके से टेबल और इंडेक्स बना सकें। साथ ही, .NET 4.0 एंटिटी फ्रेमवर्क T4 Templates नामक एक अच्छी सुविधा का लाभ उठा रहा है, जो कि बिल्ड समय पर ऑटो-जेनरेट करने के लिए एक साफ सुविधा है, जो ओ/आरएम रैपर जैसी चीजों के लिए महत्वपूर्ण है जिसे बाहरी के साथ सिंक में रखा जाना चाहिए डीबी स्कीमा - और जो ओ/आरएम उपकरण की तुलना में बेहतर (उर्फ प्री-कंपाइल) प्रदर्शन उत्पन्न करना चाहिए जो रनटाइम तक डेटाबेस कॉलम के प्रकारों को नहीं जानता है।

+0

+1 एक अच्छा और व्यापक उत्तर। यह ध्यान देने योग्य हो सकता है कि वर्तमान में, ईएफ केवल आरडीबीएमएस का समर्थन करता है। ओपी ने यही पूछा था, इसलिए मुझे आपके उत्तर में कोई समस्या नहीं है, लेकिन मैं सिर्फ यह इंगित करना चाहता हूं कि अगर आपको अचानक एक विश्वसनीय सेवा, या अन्य गैर-संबंध के माध्यम से डेटा तक पहुंचने की आवश्यकता है तो ईएफ आपकी मदद नहीं करेगा। डाटा के स्रोत। –

+0

EntityFramework इनफॉर्मिक्स (शैतान का अपना डेटाबेस) –

1

सीधे माइक्रोसॉफ्ट से नहीं। उन औजारों को आमतौर पर ऑब्जेक्ट-रिलेशनल मैपर या लघु ओआरएम नाम दिया जाता है। उदाहरण के लिए, NHibernate, एक आम और व्यापक रूप से उपयोग किया जाने वाला ओआरएम है जो आपकी आवश्यकताओं के अनुरूप है। बेशक अन्य वाणिज्यिक उत्पाद जैसे टेलरिक ओपनएप ओआरएम, डेवएक्सप्रेस एक्सपीओ या रेमो ऑब्जेक्ट्स डाटाएबस्ट्रेट हैं जो आपको डेटाबेस अज्ञेयवादी होने में मदद करेंगे।

+0

के साथ काम नहीं करता है * एमएस से सीधे एक ओआरएम है: इकाई फ्रेमवर्क। –

+0

ओआरएम का एक और पहलू सिर्फ "मानक" एसक्यूएल नहीं है, बल्कि बॉयलरप्लेट कोड की भारी मात्रा भी है जिसे आप बचा सकते हैं (लेनदेन और LOB हैंडलिंग, केवल दो चीजों को ध्यान में रखकर)। – davek

2

जैसा कि मैंने समझा है कि आप आरडीबीएमएस-स्वतंत्र एसक्यूएल लिखने के लिए टूल की तलाश में हैं, लेकिन ओआरएम नहीं। विभिन्न ओआरएम विक्रेताओं द्वारा विभिन्न तरीकों से हल की गई यह वास्तविक समस्या है। मैं बस Xtensiveएसक्यूएल डोम उपकरण का उल्लेख कर सकता हूं, जो उनके ओआरएम - DataObjects.Net के लिए विकसित किया गया था। यह पूर्ण-विशेषीकृत डीओएम मॉडल का उपयोग कर क्वेरी लिखने की अनुमति देने वाले एसक्यूएल पर एक अमूर्त है। इस समय SQLOOM को DataObjects.Net से अलग से प्रचारित नहीं किया गया है, लेकिन यह एक ओपन सोर्स उत्पाद है और आप निश्चित रूप से इसके लेखकों से इसके बारे में पूछ सकते हैं।जहां तक ​​मुझे पता है कि यह किसी तीसरे पक्ष की परियोजनाओं में सफलतापूर्वक उपयोग किया जाता है।

संबंधित मुद्दे