2009-09-10 23 views
58

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

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

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

कोई विचार, क्या गलत है?

उत्तर

110

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

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

<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 भाग।

ईडीएमएक्स डिजाइनर का उपयोग करके आपके web.config या app.config में एक वैध ईएफ कनेक्शन स्ट्रिंग बनाना चाहिए।

मार्क

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

<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 एसक्यूएल सर्वर कनेक्शन स्ट्रिंग निर्दिष्ट

+0

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

+0

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

+0

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

4

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

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

शून्य आधारित कनेक्शन स्ट्रिंग हमेशा यह inherits others by default from further up the stack के रूप में अपने कॉन्फ़िग फ़ाइल में एक नहीं है।

सिफारिश की दृष्टिकोण नाम से अपने कनेक्शन का उपयोग करने की कर रहे हैं ...

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

या अपने कॉन्फ़िग फ़ाइल पहले में connnectionStrings तत्व स्पष्ट करने के लिए ...

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

मैं इस समस्या को जब था मैंने एंटीटी फ्रेमवर्क का उपयोग करना शुरू किया, ऐसा तब हुआ जब मैंने पुराने SQL सर्वर कनेक्शन को EntityFrameWork कनेक्शन में नहीं बदला।

समाधान: फ़ाइल में जहां कनेक्शन web.config फ़ाइल के माध्यम से किया जाता है संस्थाओं "connectionstring = XYZ" "नाम = जोड़ें", करें कि आप सही कनेक्शन की बात कर रहे बनाने के लिए, मेरे मामले में मैं करना पड़ा यह

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

    } 

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

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

ध्यान दें: जब समाधान के लिए इकाई मॉडल जोड़कर web.config फ़ाइल में कनेक्शन बना दी जाएगी।

2

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

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

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

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

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

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

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

weirdness

0

मैं एक ही त्रुटि है, तो नीचे के रूप में मेरी कनेक्शन स्ट्रिंग अद्यतन हो रही थी,

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

इस प्रयास करें यह आपकी समस्या का समाधान होगा।

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