संग्रहीत प्रक्रियाओं का उपयोग करना एक तरीका है, और कई वर्षों से व्यापक उपयोग में है।
C # (या किसी भी .NET भाषा) से SQL सर्वर डेटाबेस के साथ बातचीत करने का एक और आधुनिक तरीका एंटिटी फ्रेमवर्क का उपयोग करना है। एंटिटी फ्रेमवर्क का लाभ यह है कि यह उच्च स्तर की अमूर्तता प्रदान करता है।
Microsoft से उद्धृत करने के लिए ( https://msdn.microsoft.com/en-us/data/jj590134 ):
ADO.NET एंटिटी फ्रेमवर्क डेवलपर्स को सीधे रिलेशनल स्पेसिफिक स्कीमा के खिलाफ प्रोग्रामिंग के बजाय एक वैचारिक एप्लिकेशन मॉडल के खिलाफ प्रोग्रामिंग द्वारा डेटा एक्सेस एप्लिकेशन बनाने में सक्षम बनाता है। लक्ष्य डेटा-उन्मुख अनुप्रयोगों के लिए आवश्यक कोड और रखरखाव की मात्रा को कम करना है। इकाई फ्रेमवर्क अनुप्रयोग निम्नलिखित लाभ प्रदान करते हैं:
- एप्लिकेशन अधिक अनुप्रयोग-केंद्रित वैचारिक मॉडल के संदर्भ में काम कर सकते हैं, जिसमें विरासत, जटिल सदस्यों और रिश्तों के साथ प्रकार शामिल हैं।
- अनुप्रयोगों को एक विशेष डेटा इंजन या स्टोरेज स्कीमा पर हार्ड-कोडित निर्भरता से मुक्त किया जाता है।
- वैचारिक मॉडल और स्टोरेज-विशिष्ट स्कीमा के बीच मैपिंग एप्लिकेशन कोड को बदले बिना बदल सकती है।
- डेवलपर्स एक सुसंगत एप्लिकेशन ऑब्जेक्ट मॉडल के साथ काम कर सकते हैं जिसे विभिन्न स्टोरेज स्कीमाओं में मैप किया जा सकता है, संभवतः विभिन्न डेटाबेस प्रबंधन प्रणालियों में लागू किया जाता है।
- एकाधिक वैचारिक मॉडल को एकल संग्रहण स्कीमा में मैप किया जा सकता है।
- भाषा-एकीकृत क्वेरी (LINQ) समर्थन एक वैचारिक मॉडल के खिलाफ प्रश्नों के लिए संकलन-समय सिंटैक्स सत्यापन प्रदान करता है।
ORM बनाम संग्रहीत कार्यविधियों के उपयोग में विशेष रूप से सुरक्षा की दृष्टि से ट्रेडऑफ़ शामिल हैं और जहां तर्क रहता है।
SQL सर्वर के साथ विकास के लिए "क्लासिक" दृष्टिकोण है संग्रहीत तर्क प्रक्रियाओं और प्रोग्राम में रहते हैं तर्क केवल संग्रहीत प्रक्रियाओं को निष्पादित करने के लिए सुरक्षा अधिकार दिए गए हैं, तालिकाओं को सीधे अपडेट नहीं करते हैं। यहाँ अवधारणा यह है कि संग्रहीत कार्यविधियाँ अनुप्रयोग के लिए व्यावसायिक तर्क परत हैं। जबकि सिद्धांत ध्वनि है, यह विभिन्न कारणों से पक्ष से बाहर हो गया है, इसे C # या VB जैसी प्रोग्रामिंग भाषा में व्यावसायिक तर्क को लागू करने के द्वारा प्रतिस्थापित किया जा रहा है। अच्छे अनुप्रयोगों को अभी भी एक थकाऊ दृष्टिकोण के साथ लागू किया जाता है, जिसमें चिंताओं को अलग करना आदि शामिल हैं लेकिन एमवीसी जैसे पैटर्न का पालन करने की अधिक संभावना है।
डेटाबेस के बजाय ORM में तर्क को लागू करने के एक नकारात्मक डेटाबेस (DA या DBA) के लिए जिम्मेदार लोगों द्वारा डेटा अखंडता नियमों को डीबग करना और परीक्षण करना आसान है। अपनी चेकिंग से बचत खाते में धन हस्तांतरित करने का क्लासिक उदाहरण लें, यह महत्वपूर्ण है कि इसे एक परमाणु इकाई के रूप में किया जाए, दूसरे शब्दों में लेनदेन में। यदि इस प्रकार का स्थानांतरण केवल एक संग्रहीत प्रक्रिया के माध्यम से करने की अनुमति है, तो यह डीए और लेखा परीक्षकों के लिए संग्रहीत कार्यविधि के लिए अपेक्षाकृत आसान है।
यदि दूसरी ओर यह एक ORM जैसे इकाई फ्रेमवर्क के माध्यम से किया जाता है और उत्पादन में यह पता चलता है कि दुर्लभ अवसरों पर पैसे की जाँच से लिया जाता है, लेकिन बचत डिबगिंग में नहीं डाला जाना कहीं अधिक जटिल हो सकता है, खासकर यदि कई कार्यक्रम संभावित रूप से शामिल हों। यह संभवतः एक किनारे का मामला होगा, शायद अजीब हार्डवेयर मुद्दों को शामिल करना जो एक विशेष अनुक्रम में होने की आवश्यकता है आदि। इसके लिए एक परीक्षण कैसे होता है?