यह एक खुले समाप्त प्रश्न का एक सा है, लेकिन मैं कुछ राय चाहता था, जैसा कि मैं एक ऐसी दुनिया में बड़ा हुआ जहां इनलाइन SQL स्क्रिप्ट आदर्श थे, फिर हम सभी SQL इंजेक्शन आधारित मुद्दों के बारे में बहुत जागरूक थे, और sql कितना नाजुक था जब सभी स्थानों पर स्ट्रिंग जोड़तोड़ कर रहा है।
फिर ओआरएम की सुबह आई, जहां आप ओआरएम को क्वेरी समझा रहे थे और इसे अपनी स्वयं की एसक्यूएल उत्पन्न करने दे रहे थे, जो कि बहुत सारे मामलों में इष्टतम नहीं थी, लेकिन सुरक्षित और आसान थी। ORMs या डेटाबेस एब्स्ट्रक्शन लेयर्स के बारे में एक और अच्छी बात यह थी कि SQL को उसके डेटाबेस इंजन को ध्यान में रखते हुए जनरेट किया गया था, इसलिए मैं MSSQL, MYSQL के साथ Hibernate / Nhibernate का उपयोग कर सकता था और मेरा कोड कभी नहीं बदला यह सिर्फ एक कॉन्फिगरेशन डिटेल है।
अब वर्तमान दिन के लिए तेजी से आगे बढ़ें, जहां माइक्रो ओआरएम अधिक डेवलपर्स पर जीतते दिख रहे हैं मैं सोच रहा था कि हमने पूरे इन-लाइन एसक्यूएल विषय पर यू-टर्न क्यों लिया है।
मुझे स्वीकार करना चाहिए कि मुझे कोई ओआरएम कॉन्फिग फाइलों का विचार पसंद है और अपनी क्वेरी को अधिक इष्टतम तरीके से लिखने में सक्षम हूं, लेकिन ऐसा महसूस होता है कि मैं खुद को पुरानी कमजोरियों जैसे एसक्यूएल इंजेक्शन के लिए वापस खोल रहा हूं और मैं खुद को बांध रहा हूं एक डेटाबेस इंजन तो अगर मैं चाहता हूं कि मेरा सॉफ्टवेयर कई डेटाबेस इंजनों का समर्थन करे तो मुझे कुछ और स्ट्रिंग हैकरी करने की आवश्यकता होगी जो तब लगता है कि कोड को अपठनीय और अधिक नाजुक बनाना शुरू करें। (इससे पहले कि कोई इसका उल्लेख करे, मुझे पता है कि आप अधिकांश माइक्रो ऑर्म्स के साथ पैरामीटर आधारित तर्कों का उपयोग कर सकते हैं, जो एसक्यूएल टैबलेट पीसी से ज्यादातर मामलों में सुरक्षा प्रदान करता है।
तो इस तरह की बातों पर लोगों की क्या राय है? मैं इस उदाहरण में अपने माइक्रो ओआरएम के रूप में डैपर का उपयोग कर रहा हूं और एनबीबर्नेट इस परिदृश्य में मेरे नियमित ओआरएम के रूप में उपयोग कर रहा हूं, हालांकि प्रत्येक क्षेत्र में अधिकांश समान हैं।
मैं इनलाइन एसक्यूएल के रूप में क्या कहता हूंस्रोत कोड के भीतर SQL स्ट्रिंग्स है। स्रोत कोड में एसक्यूएल स्ट्रिंग्स पर डिजाइन की बहस का इस्तेमाल किया जाता था, जो तर्क के मूल इरादे से अलग होता है, यही वजह है कि सांख्यिकीय रूप से टाइप किए गए लिनक शैली के सवाल अभी भी सिर्फ 1 भाषा में लोकप्रिय हैं, लेकिन आपको एक पृष्ठ में C # और Sql कहने की सुविधा देता है अब आपके कच्चे स्रोत कोड में 2 भाषाएं परस्पर जुड़ी हुई हैं। बस स्पष्ट करने के लिए, SQL इंजेक्शन sql स्ट्रिंग्स का उपयोग करने के साथ ज्ञात मुद्दों में से एक है, मैं पहले से ही उल्लेख करता हूं कि आप इसे पैरामीटर आधारित प्रश्नों के साथ होने से रोक सकते हैं, हालांकि मैं अन्य प्रश्नों को हाइलाइट करता हूं जिसमें SQL प्रश्न आपके स्रोत कोड में शामिल हैं, जैसे DB वेंडर अमूर्त की कमी के साथ-साथ स्ट्रिंग आधारित प्रश्नों पर कब्जा करने में संकलित समय त्रुटि के किसी भी स्तर को खोने, ये सभी मुद्दे हैं जो हम ORM के साथ अपने उच्च स्तर की क्वेरी कार्यक्षमता के साथ कदमताल करने में कामयाब रहे,
इसलिए मैं व्यक्तिगत हाइलाइट किए गए मुद्दों पर कम ध्यान केंद्रित कर रहा हूं और अधिक बड़ी तस्वीर यह है कि अब SQL स्ट्रिंग्स को फिर से सीधे अपने स्रोत कोड में प्राप्त करना अधिक स्वीकार्य हो गया है, क्योंकि अधिकांश माइक्रो ओआरएम इस तंत्र का उपयोग करते हैं।
यहां एक समान प्रश्न है, जिसमें कुछ अलग-अलग दृष्टिकोण हैं, हालांकि माइक्रो ऑर्म संदर्भ के बिना इनलाइन sql के बारे में अधिक है: