5

मेरे पास वर्तमान में एक प्रोजेक्ट है जो एंटीटी फ्रेमवर्क कोड-प्रथम माइग्रेशन और वेब प्रकाशन का उपयोग करता है, जहां कनेक्शनस्ट्रिंग web.config फ़ाइल में संग्रहीत हैं।वेबपब्लिश कोड- बाहरी कनेक्शन के साथ प्रथम माइग्रेशन Strings.config फ़ाइल

यह web.config के बाहर कनेक्शनस्ट्रिंग को स्थानांतरित करने का समय आया है, और इस तरह हम उन्हें कनेक्शनस्ट्रिंग.कॉन्फिग फ़ाइल में डालते हैं, और धीमेचेटा को वेबस्पब्लिश पर बदलते हैं।

connectionStrings.config

<connectionStrings> 
    <!-- Testing Databases --> 
    <add 
     connectionString="server=testserver;database=testdatabasename;user id=someid;password=*******" 
     name="dbname" 
     providerName="System.Data.SqlClient" 
    /> 
</connectionStrings> 

web.config प्रासंगिक अनुभाग

<connectionStrings configSource="config\connectionStrings.config"> 
    </connectionStrings> 

अब जब मैं के लिए वेब संवाद बॉक्स लोड प्रकाशित करें (बिल्ड -> प्रकाशित परियोजना), सेटिंग्स टैब में मैं त्रुटि

No Databases found in the project 

यह इंगित करता है कि संवाद बॉक्स बुद्धिमान नहीं है configSource देखने और वहां से डेटा लोड करने के लिए आटा। मैं पुष्टि कर सकता हूं कि कनेक्शन डेवलपर्स मेरे डेवलपर वातावरण में ठीक से लोड हो गए हैं, और मैं यह भी पुष्टि कर सकता हूं कि slowcheetah कॉन्फ़िगरेशन को इसके उत्पादन वातावरण में ठीक से बदल रहा है।

क्या विजुअल स्टूडियो प्रकाशित करने का कोई तरीका है मेरी कॉन्फ़िगरेशन कॉन्फ़िगरेशन देखें, और कोड-प्रथम माइग्रेशन की अनुमति दें?

+0

[यह] (http://stackoverflow.com/questions/16733042/publishing-external-configuration-files-in-asp-net-mvc-project-using-visual-stud) आपकी मदद कर सकता है। –

+0

@Siva दुर्भाग्य से यह समस्या नहीं है, अन्य कॉन्फ़िगरेशन फ़ाइलों को ठीक से तैनात किया गया है। यह चीजों के विजुअल स्टूडियो पक्ष पर एक मुद्दा है :( –

+0

मेरे पास वीएस 2015 सीटीपी में एक ही समस्या है, हालांकि मुझे पूरा यकीन है कि मैं इसे VS2013 पर भी दोहरा सकता हूं। अगर मैं बाहरी ConnString.config फ़ाइल का उपयोग करता हूं, कनेक्शन स्ट्रिंग को प्रकाशन वेब संवाद द्वारा नहीं उठाया जा रहा है और मैं कोड प्रथम माइग्रेशन का उपयोग नहीं कर सकता। क्या किसी के लिए कोई कामकाज मिला है? –

उत्तर

3

मुझे विज़िट स्टूडियो 2013 अपडेट 4 का उपयोग करके प्रकाशित प्रोजेक्ट से पहले प्रोजेक्ट से एक अलग प्रोजेक्ट में एंटीटी फ्रेमवर्क 6 कोड का उपयोग करके एक ही समस्या थी और कनेक्शन के माध्यम से समान शेयर विधि का उपयोग कर रहा है .Strings 'configSource विशेषता।

मैं उन विवरणों को सूचीबद्ध करता हूं क्योंकि यह एकदम सही तूफान का कारण बनता है। इससे बाहर निकलने का प्रयास करने में मुझे कुछ अलग-अलग बग का सामना करना पड़ा और इसे EF blog they know it's a mess and are re-factoring their approach प्रति कुछ अलग तरीकों से हैक करना पड़ा। यह सबसे अच्छा है जिसके साथ मैं आ सकता हूं (यहां ड्रैगन हो):

प्रकाशित विज़ार्ड कॉन्फ़िगरेशन स्रोत को समझ में नहीं आता है, इसलिए मैंने इसे निष्कर्ष निकाला है वेब.कॉन्फिग में एक रिक्त तत्व छोड़कर स्ट्रिंग्स (आप इसे भी हटा सकते हैं पूरी तरह से लेकिन मुझे लगता है कि एक टिप्पणी के साथ अधिमानतः एक मौजूदा लेकिन खाली तत्व अधिक उचित था)। इसे स्थानीय रूप से काम करने के लिए मैंने डीबग मोड (स्थानीय रूप से) में काम करने के लिए एक कनेक्शन फैक्ट्री जोड़ा और प्रकाशित विज़ार्ड को डीबी माइग्रेशन ढूंढने के लिए बनाया। मैंने एक फैक्ट्री का इस्तेमाल किया क्योंकि एक कनेक्शनस्ट्रिंग हमेशा एक फैक्ट्री का अधिग्रहण करता है और मुझे किसी भी रूपांतरित होने से पहले परियोजना को काम करने के लिए इसका दुरुपयोग करना पड़ता है। यह भी सुनिश्चित करें कि आप जिस स्ट्रिंग को dbcontext constructor aka "connectionStringOrDatabaseName" में पास करते हैं, दोनों कनेक्शन स्ट्रिंग और डेटाबेस नाम है (फ़ैक्टरी जेनरेट डीबी कनेक्शन स्ट्रिंग डीबी से मेल खाता है)।

अब यह डेटाबेस पाता है और यह स्थानीय रूप से काम करता है लेकिन यह वास्तव में आपके साझा कॉनफिग का उपयोग नहीं कर रहा है (इस प्रकार हमेशा प्रकाशित होने पर काम नहीं करेगा)। उस पते को हल करने के लिए मैंने एक web.config को xsd में परिवर्तित किया: रिक्त/गायब कनेक्शन को बदलें/सम्मिलित करें कॉन्फ़िगरेशन तत्व का उपयोग कर कॉन्फ़िगरेशन तत्व। यदि आप अभी प्रकाशित करने का प्रयास करते हैं तो आप उस समस्या में भाग लेंगे जहां invalid connectionStrings element is produced है।

इतने करीब होने के बावजूद मुझे उस समस्या का हल सीधे पता नहीं लगा सका, इसलिए मुझे अभी तक एक और काम नियोजित करना पड़ा: I created a custom transformation aka xsd: आयात करें कि कॉन्फ़िगरेशन स्रोत विशेषता के बाद मूल तत्व को प्रतिस्थापित करता है दूसरी फाइल में, मैं पाठक को एक अभ्यास के रूप में कार्यान्वयन छोड़ दूंगा।

संबंधित मुद्दे