2010-07-15 9 views
10

से डेटाबेस तक पहुंचने के लिए सबसे अधिक उपयोग की जाने वाली विधि क्या है, ठीक है, मैं इस सवाल से पूछ रहा हूं क्योंकि मैं पूरी तरह उलझन में हूं। मैं सी # से डेटाबेस तक पहुंचने के लिए सामान्य दृष्टिकोण का उपयोग करता था (मेरा मतलब है SQLConnection, OracleConnection, SQLCommand, executequery आदि का उपयोग करके)। तब मैंने एडीओ.NET, ओआरएम के बारे में सुना और एनएचबेर्नेट को सीखा (समर्थक नहीं, लेकिन मैं प्रबंधन कर सकता हूं)।सी # आजकल

हाल ही में मुझे NHibernate के बारे में कोई विशेष गतिविधियां नहीं दिखाई देती हैं। मेरे आस-पास के लोग जो एनएचबर्ननेट (और एक प्रशंसक थे) का उपयोग करते थे, अब वे अन्य तरीकों से आगे बढ़ रहे हैं।

तो आजकल सबसे अधिक उपयोग किया जाने वाला डेटाबेस एक्सेस विधि क्या है? मैं इस बदलती प्रवृत्ति का ट्रैक कैसे रख सकता हूं?

+8

आपके आस-पास के लोगों ने क्या कहा था कि वे आगे बढ़ रहे थे? –

+0

और SqlDataSource, ऑब्जेक्टडेटा स्रोत, LinqDataSource, LINQ से SQL, इकाई फ्रेमवर्क, ADO.Net डेटा सेवाओं को न भूलें ... – DOK

+0

बहुत सी चीजें ... सामान्य दृष्टिकोण (वे कहते हैं कि यह टीडीडी की सुविधा देता है), लिंक, इकाई फ्रेमवर्क इत्यादि। आदि इत्यादि ...... –

उत्तर

19

सबसे सामान्य तरीके शायद ये हैं:

  • LINQ एसक्यूएल को
  • इकाई की रूपरेखा
  • ADO.NET सीधे
  • NHibernate
  • अन्य ओ/आरएमएस।

उनमें से सभी अभी भी उपयोग में हैं और उनके पास विभिन्न फायदे और नुकसान हैं। मुझे लगता है कि माइक्रोसॉफ्ट वर्तमान में लोगों को Entity Framework का उपयोग करने के लिए प्रोत्साहित करने की कोशिश कर रहा है।

4

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

10

SQL सर्वर के लिए ADO.NET केवल एक ही तरीका है। अधिक विशेष रूप से, वहां कनेक्शन और रीडर ऑब्जेक्ट्स। अब, आप कह सकते हैं कि एंटीटी फ्रेमवर्क जैसी चीजें हैं - लेकिन दिलचस्प है कि वे वास्तविक एक्सेस लेयर से ऊपर हैं, पहले नामित दोनों एक्सेस तत्वों का उपयोग करते हुए। यहां तक ​​कि डेटासेट एक उच्च परत है (डेटा डेटा रीडर के माध्यम से पढ़ा जाता है)।

तो आजकल सबसे अधिक उपयोग किया जाने वाला डेटाबेस एक्सेस विधि क्या है?

मुझे यकीन है कि यह अभी भी डेटासेट है। ड्रैग और ड्रॉप सिद्धांत के बाद अशिक्षित की मात्रा आईएमएचओ अभी भी बहुमत है, और दृश्य स्टूडियो में यह दृष्टिकोण डेटासेट की ओर जाता है।

पेशेवर एक ओआरएम का उपयोग करते हैं। एंटिटी फ्रेमवर्क अब उन लोगों द्वारा बहुत धक्का दिया जाता है जो ज्यादातर वास्तव में नहीं जानते कि ओआरएम इसे सही तरीके से प्रोग्राम कर सकता है। अभी मेरी उच्चतम शर्त अभी भी एक उच्च गुणवत्ता वाली परत के लिए NHibernate है।

+4

अंतिम पैराग्राफ के लिए कोई बुरा जवाब नहीं बचा है। एंटिटी फ्रेमवर्क का उपयोग हम में से उन लोगों द्वारा किया जाता है जो महसूस करते हैं कि विभिन्न प्रकार के ओआरएम हैं, प्रत्येक में अद्वितीय शक्तियां और कमजोरियां हैं ... इसलिए हमने अपने आवेदन के लिए इकाई फ्रेमवर्क चुना है। –

+3

ड्रैग और ड्रॉप के केवल 'अशिक्षित' उपयोग नहीं, लेकिन एडीओ.NET और टाइप किए गए डेटासेट का उपयोग करके वहां मौजूद कई मौजूदा सिस्टम हैं और इन्हें अभी भी विकसित किया जा रहा है - कोई भी नए सिस्टम का उपयोग करने के लिए पूरी प्रणाली को दोबारा करने वाला नहीं है ओआरएम प्रौद्योगिकी। –

+0

@ हर्बी: विरासत कोड एक स्पष्ट रक्षा है, ठीक है। @ जस्टिन - ईएफ अब तक एक सभ्य ओआरएम कभी नहीं था। इसमें परिपक्व पेशकशों की तुलना में इसमें कोई ताकत नहीं है। – TomTom

1

तो, .NET में डेटाबेस तक पहुंचने के लिए कुछ तकनीकें हैं। पहले, यह ADO.NET है। यह एक 'सत्य' पहुंच तकनीक है, क्योंकि अन्य (जैसे NHibernate, LINQ2SQL, इकाई फ्रेमवर्क (वे सभी ओआरएम हैं)) वास्तव में डेटाबेस से कनेक्ट करने और इसके खिलाफ कमांड निष्पादित करने के लिए ADO.NET का उपयोग करता है। बेशक, .NET डेटाबेस के साथ बातचीत करने के अन्य तरीकों को प्रदान करता है, उदाहरण के लिए, कुछ इंटरफ़ेस आयात करना, लेकिन वे प्राकृतिक नहीं हैं।

इसके अलावा, उपकरण जो डेटाबेस के साथ संवाद करने में आपकी सहायता करते हैं। यह ADO.NET एक्सटेंशन (जैसे एंटरप्राइज़ लाइब्रेरी डेटा एक्सेस) है, और टूल आपको ऑब्जेक्ट्स (नामित इकाइयों) के साथ काम करने की अनुमति देता है जो ऑब्जेक्ट-ओरिएंटेड रनटाइम के लिए .NET के रूप में स्वाभाविक हैं, लेकिन डेटाबेस से उस इकाई को लोड और सेव करें। ओआरएम (ऑब्जेक्ट-रिलेशनल मैपर) नामक इन टूल्स, और आधुनिक टूल्स का उपयोग करना आसान और अच्छा है।

1

मैं व्यक्तिगत रूप से इकाइयों को उत्पन्न करने के लिए CodeSmith का उपयोग करके लिंक से एसक्यूएल से प्यार करता हूं, विशेष रूप से मुझे लगता है कि Plinqo में एक्स्टेंसिबिलिटी की सबसे अधिक आसानी है। यह आपको सभी एंटीटी ऑब्जेक्ट्स को अलग-अलग फ़ाइलों में एक संपादन योग्य संस्करण और जेनरेट किए गए एक से अलग करने की अनुमति देता है। यह आपको अपने डीएएल को जितने आवश्यक सहायक कार्यों के साथ विस्तारित करने की अनुमति देता है। इसमें एक विजुअल स्टूडियो ऐड-इन है जो आपको अपनी सभी इकाइयों को केवल एक क्लिक के साथ पुन: उत्पन्न करने देता है।

मैं आमतौर पर डेटाबेस को पहले डिज़ाइन में ले जाता हूं, इसलिए मैं डेटाबेस में अपने परिवर्तन करता हूं, वीएस पर जाता हूं, इकाइयों को पुन: उत्पन्न करता हूं, और फिर मैं कोडिंग जारी रख सकता हूं।

चाहे आप जो भी चुनते हैं, मुझे लगता है कि एक ओआरएम के लिए एक महत्वपूर्ण कारक आपकी आवश्यकताओं को पूरा करने के लिए इसे कॉन्फ़िगर करने में सक्षम है, कोई भी आकार सभी फिट बैठता है।

Btw, मैं CodeSmith लिए काम नहीं करते, मैं सिर्फ यह अच्छी तरह से उपयोग करते हैं :)

1

अगर मैं एक का चयन करना है, मैं कहूंगा कि इकाई की रूपरेखा सबसे सामान्य तरीका है कि, SLQ को LINQ पदावनत किया जा रहा है भविष्य में, एनएचबेर्नेट भविष्य में अधिक से अधिक होगा।

लेकिन सबसे अच्छी सलाह शायद पूरी टीम के लिए एक चुनने का प्रयास है! यहां तक ​​कि यदि यह नकारात्मक है तो वे सभी किसी बिंदु या दूसरे पर हैं।

+0

@ बेंजामिन ऐसा मत करो। – Rawling

1

एनएचबेर्नेट और एंटिटी फ्रेमवर्क डाटाबेस सारण करने के लिए महान उपकरण हैं (ईएफ कोड फर्स्ट अद्भुत है), लेकिन कुछ मामलों में, यह खराब है।

मैंने कई अनुप्रयोगों को देखा है कि खराब प्रदर्शन डेटाबेस कनेक्शन पर है, और एनएच या ईएफ डेटाबेस की सबसे शक्तिशाली सुविधाओं के उपयोग या डेटाबेस की सबसे शक्तिशाली सुविधाओं के उपयोग की अनुमति नहीं देता है, जब तक कि आप ओआरएम में विशेषज्ञ नहीं हैं (दुर्भाग्यवश, असामान्य हैं)।

व्यक्तिगत रूप से, मैं अपने हाथों में नियंत्रण बनाए रखना पसंद करता हूं।

मैंने एक उपकरण बनाया, Thunderstruck, कि मैं अपनी परियोजनाओं में उपयोग करता हूं और हाल ही में मैंने स्रोत को Github पर रखा है।

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