2009-09-04 14 views
14

के रूप में संग्रहीत एक SQL स्क्रिप्ट निष्पादित करना मैं अपने समाधान में लंबी .sql स्क्रिप्ट स्टोर करना चाहता हूं और उन्हें प्रोग्रामेटिक रूप से निष्पादित करना चाहता हूं। मैंने पहले से ही यह पता लगाया है कि मेरी एसक्यूएल स्क्रिप्ट वाली स्ट्रिंग को कैसे निष्पादित किया जाए, लेकिन मुझे यह नहीं पता है कि समाधान में संग्रहीत फ़ाइल से स्ट्रिंग को कैसे पढ़ा जाए (उदाहरण के लिए/स्क्रिप्ट सबफ़ोल्डर के तहत)।संसाधन

+0

लिखा डुप्लिकेट प्रश्न में एम्बेडेड संसाधन के बारे में अच्छी तरह से विस्तृत जवाब नहीं है https://stackoverflow.com/questions/23301964/ef-6-code-first-with-custom-stored -प्रोकेशर/3 9 673550 # 3 9 673550 –

उत्तर

19

सबसे पहले, .sql फ़ाइल की गुणों को संपादित करें ताकि इसे संसाधन के रूप में एम्बेड किया जा सके।

फिर स्क्रिप्ट को पुनः प्राप्त करने निम्न के समान कोड का उपयोग करें:

string commandText; 
Assembly thisAssembly = Assembly.GetExecutingAssembly(); 
using (Stream s = thisAssembly.GetManifestResourceStream(
     "{project default namespace}.{path in project}.{filename}.sql")) 
{ 
    using (StreamReader sr = new StreamReader(s)) 
    { 
     commandText = sr.ReadToEnd(); 
    } 
} 
+2

@ विल - एक एसक्यूएल सीएलआर प्रोजेक्ट में दृढ़ता से टाइप की गई संसाधन फ़ाइल जोड़ने का कोई तरीका नहीं है। – jpierson

+1

@Will संसाधन भी एक खराब समाधान हैं, imho। जेनरेट की गई एक्सएमएल टिप्पणियों को संशोधित करने का एक तरीका प्रतीत नहीं होता है, और सारांश जैसे * टेबल डब्बो बनाने के लिए एक स्थानीय स्ट्रिंग को दिखता है। फू (... * शायद ही उपयोगी है। – Stijn

24

अपनी परियोजना के लिए एसक्यूएल फ़ाइलें जोड़ें तो एक नया संसाधन फ़ाइल बनाएँ। एसक्यूएल फ़ाइल खोलें और ऊपर-बाएं ड्रॉप डाउन से 'फ़ाइलें' चुनें (डिफ़ॉल्ट स्ट्रिंग्स है)। फिर संसाधन जोड़ें दबाएं और SQL फ़ाइल को/नेविगेट करें। यह तुम इतनी तरह अपने प्रकार-सुरक्षा खोने के बिना संसाधन फ़ाइल से SQL प्राप्त करने के लिए अनुमति देता है:

SqlFiles.SqlScript

उपरोक्त प्रक्रिया विजुअल स्टूडियो 2010 में मैं भी my blog पर इस बारे में लिखा है।

+0

पता है कि यह एक पुरानी पोस्ट है। बहुत साफ है, लेकिन आप स्क्रिप्ट में पैरामीटर जोड़ने के बारे में कैसे जाते हैं? – zmaster

+0

इसके लिए आपको 'string.Format' का उपयोग करने में सक्षम होना चाहिए। –

+0

कोड में संसाधनों को संसाधनों में सेट करें और सेट करें, कोड में NAMESPACE.Properties लिखें। स्रोत .ScriptDB.ToString() –

0

जोड़ें संसाधन करने के लिए फ़ाइल, और फ़ाइल सेट संसाधन करने के लिए, कोड लिखने में:

String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString() 
0

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

अस्वीकरण: मैं QueryFirst