2009-09-11 15 views
58

AppConfig में |DataDirectory| का उपयोग करना संभव है लेकिन मुझे कोई दस्तावेज़ नहीं मिल रहा है?एडीओ.NET | डेटा डायरेक्टरी | यह दस्तावेज कहां है?

+0

[यह पोस्ट] (http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/dc31ea59-5718-49b6-9f1f-7039da425296) इसे पर्याप्त रूप से समझाता है। –

उत्तर

71

|DataDirectory| एक प्रतिस्थापन स्ट्रिंग है ताकि आप अपनी डेटाबेस फ़ाइल के स्थान को अलग से कॉन्फ़िगर कर सकें।

तो बजाय:

SqlConnection c = new SqlConnection (
    @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master"); 

आप निम्न कार्य करें:

// Set |DataDirectory| value 
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB"); 

// SQL Connection String with |DataDirectory| substitution string 
SqlConnection c = new SqlConnection (
    @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master"); 
+2

यहां कुछ दस्तावेज (खोज डेटा डायरेक्टरी) हैं: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx – ironic

+2

और अधिक: http://msdn.microsoft.com /en-us/library/cc716756.aspx – ironic

+0

यह स्क्लाइट के साथ भी काम करता है: http://sqlite.phxsoftware.com/forums/t/1824.aspx – juFo

4

एक आंतरिक वर्ग SqlConnectionHelper कहा जाता है जो इस पार्स करता है और MDF बनाता है अगर जरूरत है।

यहां केवल एकमात्र एमएस दस्तावेज़ है जिसे मैं उस वर्ग और डेटा डायरेक्टरी के बारे में पा सकता हूं। मैक्रो: http://msdn.microsoft.com/en-us/library/aa478948.aspx

14

MSDN सामाजिक मंचों this जवाब

पाया जा सकता है में | DataDirectory | (पाइप प्रतीकों में संलग्न) एक प्रतिस्थापन स्ट्रिंग है जो डेटाबेस के पथ को इंगित करती है। यह पूर्ण पथ को हार्ड-कोड करने की आवश्यकता को समाप्त करता है जो कई समस्याओं का कारण बनता है क्योंकि डेटाबेस के पूर्ण पथ को विभिन्न स्थानों पर क्रमबद्ध किया जा सकता है। डेटा डायरेक्टरी भी एक परियोजना को साझा करना और एप्लिकेशन को तैनात करना आसान बनाता है।

उदाहरण के लिए, बजाय निम्नलिखित कनेक्शन स्ट्रिंग होने के:

“Data Source = |DataDirectory|\Mydb.sdf” 

DataDirectory गुण सेट करने के लिए, AppDomain फोन:

"Data Source= c:\program files\MyApp\Mydb.sdf" 

DataDirectory का उपयोग करना, आप निम्नलिखित कनेक्शन स्ट्रिंग हो सकता है। SetData विधि।

  • अनुप्रयोगों जो किसी फ़ोल्डर में उपयोगकर्ता के कंप्यूटर पर डाल रहे हैं के लिए, डेटाबेस फ़ोल्डर आवेदन फ़ोल्डर का उपयोग करता है: आप DataDirectory गुण सेट नहीं है, तो निम्न डिफ़ॉल्ट नियम डेटाबेस फ़ोल्डर तक पहुँचने के लिए लागू किया जाएगा।
  • क्लिकऑन के तहत चल रहे अनुप्रयोगों के लिए, डेटाबेस फ़ोल्डर बनाया गया विशिष्ट डेटा फ़ोल्डर का उपयोग करता है।
+0

आप एक एमवीसी परियोजना में AppDomain.SetData कहां कॉल करेंगे? – alex

8

गलत लोग! | डेटा डायरेक्टरी | mssql \ data निर्देशिका को संदर्भित करता है जिसके लिए आपका उदाहरण कॉन्फ़िगर किया गया है।

तो उदाहरण के लिए मैं विजुअल स्टूडियो 2012 एसक्यूएल एक्सप्रेस के साथ संयोजन का उपयोग कर रहा हूं। | DataDirectory | सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट एसक्यूएल सर्वर \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA के तहत सभी एमडीएफ फाइलों को स्थानांतरित करता है जहां मेरा एसक्यूएल एक्सप्रेस स्थापित नहीं किया गया था मेरे समाधान app_data फ़ोल्डर।

इसके अलावा फ़ाइल का नाम MVCMovie.Models.MovieDBContext नहीं है Movies.mdf जैसा कि मेरे web.config में निर्दिष्ट है।

मुझे लगता है कि इसे दृश्य स्टूडियो में कहीं भी कॉन्फ़िगर करने की आवश्यकता है ताकि इसे app_data के तहत उचित रूप से रखा जा सके।

3

यदि आप पहले माइग्रेशन कोड का उपयोग कर रहे हैं तो यह प्रासंगिक हो सकता है।

अद्यतन-डेटाबेस कमांड चलाते समय VisualStudio 2013 (कम से कम) के साथ डेटा निर्देशिका दृश्य स्टूडियो में वर्तमान में कॉन्फ़िगर "स्टार्टअप प्रोजेक्ट" से संबंधित है।

भले ही आप किसी अन्य प्रोजेक्ट पर अद्यतन-डेटाबेस चलाएं (जैसा कि पैकेज प्रबंधक कंसोल पर चुना गया है), यह वर्तमान में चयनित स्टार्टअप प्रोजेक्ट के App_Data पर आपका डेटाबेस बनाएगा।