कीवर्ड समर्थित डेटा स्रोत नहीं


82

मेरे पास डिफ़ॉल्ट सदस्यता डेटाबेस के साथ एक asp.net-mvc एप्लिकेशन है। मैं इसे ADO.NET एंटिटी फ्रेमवर्क द्वारा एक्सेस कर रहा हूं।

अब मैं इसे IIS में ले जाना चाहता हूं, लेकिन कई समस्याएं सामने आईं। मुझे SQL Server मैनेजमेंट स्टूडियो स्थापित करना था, नया DB बनाना था, पिछले .MDF फ़ाइल से सभी डेटा आयात करना था। केवल करने के लिए बचा हुआ काम (जहाँ तक मुझे पता है) कनेक्शन स्ट्रिंग में बदलना है। हालाँकि, मैं वास्तव में इसके बारे में अनुभव नहीं कर रहा हूँ और कीवर्ड का समर्थन नहीं कर रहा हूँ: 'डेटा स्रोत'। अपवाद। यहाँ मेरा कनेक्शन स्ट्रिंग है:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

किसी भी विचार, क्या गलत है?


जब मुझे गलत स्टार्टअप प्रोजेक्ट चुना गया था तो मुझे यह त्रुटि हुई थी, इसलिए वीएस को मेरे कनेक्शन के तार नहीं मिल पाए थे। App.config के साथ एक स्टार्टअप प्रोजेक्ट सुनिश्चित करें।
wnbates

जवाबों:


147

क्या आपके पास एक वैध ADO.NET कनेक्शन स्ट्रिंग है - लेकिन यह है नहीं एक वैध इकाई की रूपरेखा कनेक्शन स्ट्रिंग।

EF कनेक्शन स्ट्रिंग कुछ इस तरह दिखाई देगी:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

आप अपने ईएफ कनेक्शन स्ट्रिंग में सभी metadata=और providerName=तत्वों को याद कर रहे हैं ...... आपके पास मूल रूप से केवल वही है जो provider connection stringभाग में निहित है ।

EDMX डिज़ाइनर का उपयोग करके, अपने web.config या app.config में, आपके लिए एक वैध EF कनेक्शन स्ट्रिंग बनाना चाहिए।

न घुलनेवाली तलछट

अद्यतन: ठीक है, मैं समझता हूं कि आप क्या करने की कोशिश कर रहे हैं: आपको ASP.NET उपयोगकर्ता / सदस्यता डेटाबेस के लिए एक दूसरे "ADO.NET" कनेक्शन स्ट्रिंग की आवश्यकता है। आपका स्ट्रिंग ठीक है, लेकिन प्रदाता नाम गलत है - यह "System.Data.SqlClient" होना चाहिए - इस कनेक्शन में ईएनटीिटी फ्रेमवर्क का उपयोग नहीं किया गया है - इसके लिए "एंटिटी क्लिएंट" निर्दिष्ट न करें!

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

यदि आप providerName=System.Data.EntityClient==> इकाई फ्रेमवर्क कनेक्शन स्ट्रिंग (मेटाडेटा = और सब कुछ के साथ) निर्दिष्ट करते हैं ।

यदि आपको जरूरत है और providerName=System.Data.SqlClient==> सीधे ADO.NET SQL सर्वर कनेक्शन स्ट्रिंग को सभी EF परिवर्धन के बिना निर्दिष्ट करें


तथ्य की बात के रूप में, यह किया था, लेकिन फिर मुझे अपवाद मिल रहा है भौतिक फ़ाइल "C: \ OVSS \ Stavicky \ trunk \ Stavicky \ App_Data \ aspnetdb.mdf" खोलने में असमर्थ। ऑपरेटिंग सिस्टम त्रुटि 5: "5 (इस त्रुटि के लिए पाठ पुनर्प्राप्त करने में विफल। कारण: 15105)"। फ़ाइल C: \ OVSS \ Stavicky \ trunk \ Stavicky \ App_Data \ aspnetdb.mdf के लिए एक ऑटो-नामित डेटाबेस संलग्न करने का प्रयास विफल रहा। समान नाम वाला एक डेटाबेस मौजूद है, या निर्दिष्ट फ़ाइल को खोला नहीं जा सकता है, या यह UNC शेयर पर स्थित है। कुछ स्रोतों से, मैंने सोचा, यह गलत है .. वैसे भी धन्यवाद।
बजे

मुझे यकीन नहीं है कि मैं दूसरे कनेक्शन स्ट्रिंग समस्या को समझता हूं। मुझे डिज़ाइनर द्वारा उत्पन्न एक और एएसपीनेटमेम्बरशिप जो आपने मुझे लिखी है, वहाँ मिलाने देना चाहिए।
बजे

यदि आपके पास ईडीएमएक्स डिजाइनर में अपनी संस्थाएं हैं - जिन्हें "एंटिटी क्लिएंट" और ईएफएफ स्ट्रिंग के माध्यम से एक्सेस करने की आवश्यकता है। यदि आप "आउट-ऑफ-द-बॉक्स" ASP.NET सदस्यता प्रणाली का उपयोग करते हैं, तो यह आपके EF मॉडल का हिस्सा नहीं है , इसलिए जब आप अपने ASP.NET सदस्यता डेटाबेस के लिए कनेक्शन स्ट्रिंग बनाते हैं, तो आप "EntityClient" का उपयोग नहीं कर सकते। प्रदाता - SqlClient का उपयोग करें।
marc_s

तो हाँ - तुम दोनों की जरूरत है - एफई कनेक्शन स्ट्रिंग अपने edmx प्रणाली आप के लिए उत्पन्न, प्लस एक दूसरा - सामान्य ADO.NET कनेक्शन स्ट्रिंग - ASP.NET सदस्यता प्रणाली के लिए।
marc_s

1
बस आपने अपने पोस्ट पर 100 वाँ अपवोट दिया। मेरी क्रिसमस :)
RBT

7

यह समस्या तब हो सकती है जब आप सूचकांक द्वारा अपने web.config (या app.config) कनेक्शन तार का संदर्भ लेते हैं ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

शून्य आधारित कनेक्शन स्ट्रिंग हमेशा आपकी कॉन्फ़िग फ़ाइल में एक नहीं होती है क्योंकि यह स्टैक अप को आगे से डिफ़ॉल्ट रूप से दूसरों को विरासत में मिलती है

अनुशंसित दृष्टिकोण आपके कनेक्शन को नाम से एक्सेस करने के लिए हैं ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

या अपने config फ़ाइल में पहले कॉननेक्शन स्ट्रीम्स तत्व को साफ़ करने के लिए ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...

2

मुझे भी यही समस्या हो रही थी।
लेकिन यह कोड अच्छा प्रयास करता है।

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

0

मुझे यह समस्या तब हुई जब मैंने Entity फ्रेमवर्क का उपयोग करना शुरू किया, यह तब हुआ जब मैंने EntityFrame.ork कनेक्शन के लिए पुराने SQL सर्वर कनेक्शन को नहीं बदला।

समाधान: फ़ाइल में जहां कनेक्शन web.config फ़ाइल के माध्यम से बनाया गया है "नाम जोड़ें" = " एंटिटीज़ " कनेक्शनस्ट्रीमिंग = एक्सवाईजेड ", सुनिश्चित करें कि आप सही कनेक्शन का उल्लेख कर रहे हैं, मेरे मामले में मुझे यह करना था

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

जब भी कनेक्शन स्थापित करने की आवश्यकता हो, MyEntityFrameworkConnection को कॉल करें।

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

नोट: समाधान में Entity मॉडल जोड़ते समय web.config फ़ाइल में कनेक्शन स्वचालित रूप से उत्पन्न हो जाएगा।


0

मुझे पता है कि यह एक पुरानी पोस्ट है लेकिन मुझे हाल ही में वही त्रुटि मिली है जो इसके लायक है, यहां एक और समाधान है:

यह आमतौर पर एक कनेक्शन स्ट्रिंग त्रुटि है, कृपया अपने कनेक्शन स्ट्रिंग के प्रारूप की जांच करें, आप 'एंटिटी फ्रेमवर्क कनेक्शनस्ट्रिंग' देख सकते हैं या ऊपर दिए गए सुझावों का पालन कर सकते हैं।

हालांकि, मेरे मामले में मेरा कनेक्शन स्ट्रिंग ठीक था और त्रुटि कुछ पूरी तरह से अलग होने के कारण हुई थी, इसलिए मुझे उम्मीद है कि इससे किसी को मदद मिलेगी:

  1. पहले मुझे EDMX त्रुटि मिली : EDMX में एक नया डेटाबेस टेबल था और तालिका मेरे डेटाबेस में मौजूद नहीं थी (मजेदार बात यह है कि त्रुटि बहुत स्पष्ट नहीं थी क्योंकि यह मेरे EDMX या आउटपुट विंडो में नहीं दिखाया गया था, इसके बजाय इसे 'चेतावनी' के तहत 'त्रुटि सूची' विंडो में विजुअल स्टूडियो में हटा दिया गया था। मैंने अपने डेटाबेस में लापता तालिका को जोड़कर इस त्रुटि को हल किया। लेकिन, मैं वास्तव में एक संग्रहीत प्रक्रिया को जोड़ने की कोशिश में व्यस्त था और अभी भी 'डेटा स्रोत' त्रुटि प्राप्त कर रहा हूं, इसलिए नीचे देखें कि मैंने इसे कैसे हल किया:

  2. संग्रहीत कार्यविधि त्रुटि : मैं एक संग्रहीत कार्यविधि जोड़ने की कोशिश कर रहा था और हर बार जब मैंने इसे EDMX डिज़ाइन विंडो के माध्यम से जोड़ा तो मुझे एक 'डेटा स्रोत' त्रुटि मिली। समाधान को संग्रहीत प्रक्रिया को रिक्त के रूप में जोड़ना था (मैंने संग्रहित खरीद नाम और घोषणा को रखा लेकिन संग्रहीत खरीद की सामग्री को हटा दिया और इसे 'चुनिंदा 1' के साथ बदल दिया और इसे ईडीएमएक्स में जोड़ दिया)। इसने काम कर दिया! संभवतः EF को मेरे संग्रहित खरीद के अंदर कुछ पसंद नहीं आया। एक बार जब मैंने EF में खरीदारी जोड़ दी तो मैं अपने डेटाबेस पर proc की सामग्री को अपडेट करने में सक्षम था कि मैं क्या बनना चाहता था और यह काम करता है, 'डेटा स्रोत' त्रुटि हल हो गई।

weirdness


0

मुझे वही त्रुटि मिल रही थी, फिर नीचे के रूप में मेरा कनेक्शन स्ट्रिंग अपडेट किया गया,

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

इसे आज़माएं इससे आपकी समस्या दूर हो जाएगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.