Prepare
method is actually on DbCommand
, जो इससे प्राप्त सभी वर्ग उठाएंगे।
यह क्या करता है डेटाबेस प्रदाता के लिए विशिष्ट है कि DbCommand
है। हालांकि, यह कहना सुरक्षित है (हालांकि पूर्ण नियम नहीं है) कि अधिकांश स्थानों में, यदि आदेश एक संग्रहीत प्रक्रिया है, तो यह कोई ऑप नहीं देगा (इसे override of Prepare
on SqlCommand
के लिए दस्तावेज किया गया है), क्योंकि संग्रहीत प्रक्रियाओं में आमतौर पर उनकी क्वेरी होती है योजनाओं को पूर्व कॉल, ऑप्टिमाइज़ करने के लिए स्पष्ट कॉल, या सृजन पर फिर से अनुकूलित किया गया है (फिर, अंतर्निहित डेटाबेस के आधार पर)।
हालांकि, अगर आप कर रहे हैं नहीं एक संग्रहीत प्रक्रिया का उपयोग कर, बल्कि एक पैरामिट्रीकृत ऑन-द-मक्खी उत्पन्न क्वेरी, तो यह कॉल अंतर्निहित डेटाबेस क्वेरी की एक अनुकूलित संस्करण उत्पन्न करने के लिए अवसर प्रदान करेगा।
आप आमतौर पर ऐसा करेंगे जब आप जानते हैं कि आप कम समय के भीतर कई बार आदेश निष्पादित करने जा रहे हैं (यह वास्तव में, डेटाबेस पर निर्भर करता है, और क्वेरी योजनाओं को कितनी देर तक कैश किया जाता है)।
यह कहा जाना चाहिए कि SQL सर्वर (2005 तक, आईआईआरसी) पहली निष्पादन के बाद उपयोग के आधार पर पैरामीटरयुक्त क्वेरी योजनाओं को कैश करता है (मुझे लगता है कि कैश एक समय-अपघृत कैश है जो रीसेट करता है या इसकी क्षय दर धीमी होती है बाद के उपयोग), इसलिए यदि आप एक ही पैरामीटरयुक्त क्वेरी के साथ कई कॉल करने जा रहे हैं, तो आपको क्वेरी तैयारी कार्य को आगे बढ़ाने के अलावा Prepare
पर कॉल के साथ अधिक लाभ नहीं हो सकता है (जो कि लाभ भी हो सकता है, इसके आधार पर काम आपको करना है)।
संबंधित प्रश्न http://stackoverflow.com/questions/2449827/pros-and-cons-of-using-sqlcommand-prepare-in-c – MadBoy