2012-08-07 25 views
15

से प्रदाता कनेक्शन स्ट्रिंग यदि आप ऑब्जेक्ट कॉन्टैक्स डेटा मॉडल (ईडीएमएक्स फ़ाइल के साथ) का उपयोग कर रहे हैं, तो इसके निर्माण के दौरान आप अपनी कॉन्फ़िगरेशन फ़ाइल के अंदर कनेक्शन स्ट्रिंग निर्दिष्ट करना चाहेंगे।इकाई फ्रेमवर्क

कनेक्शन स्ट्रिंग दुर्भाग्यवश सामान्य कनेक्शन स्ट्रिंग नहीं है क्योंकि इसमें कुछ शामिल हैं ... इकाई कनेक्शन के लिए आवश्यक चीजें हैं। MySql कनेक्शन के साथ उदाहरण:

<add name="MyDbEntities" connectionString="metadata=res://*/Namespace.MyDb.csdl|res://*/Namespace.MyDb.ssdl|res://*/Namespace.MyDb.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=172.17.17.154;User Id=user;password=password;Persist Security Info=True;database=MyDatabase;Convert Zero Datetime=true&quot;" providerName="System.Data.EntityClient" /> 

समस्या मेरे पास है कि इस कनेक्शन स्ट्रिंग पैरामीटर "प्रदाता कनेक्शन स्ट्रिंग" में प्रदाता के कनेक्शन स्ट्रिंग होता है।

एक विशिष्ट कारण के लिए, मुझे एक नया MySQL कनेक्शन बनाने की आवश्यकता है, जो इकाई मॉडल से असंबंधित है। MySQL कनेक्शन बनाने के लिए, मुझे इसे MySQL कनेक्शन स्ट्रिंग प्रदान करने की आवश्यकता है - जो कि इकाई मॉडल के लिए प्रदाता कनेक्शन स्ट्रिंग है और मुझे पता है कि कनेक्शन स्ट्रिंग की आवश्यकता है, जो हमेशा इकाई मॉडल के लिए एक ही कनेक्शन स्ट्रिंग है।

लेकिन मैं प्रदाता कनेक्शन स्ट्रिंग प्रोग्रामेटिकल कैसे प्राप्त करूं? मुझे कोई सफलता के साथ मॉडल उदाहरण ब्राउज़ कर के साथ फंस गया था ...

निम्नलिखित:

ModelInstance.Connection.ConnectionString 

की तरह "नाम = TestBotEntities", नहीं भी पूरे कनेक्शन स्ट्रिंग कुछ होता है। इसलिए मैं करने की कोशिश की:

ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString 

लेकिन यह है कि एक पूरी इकाई कनेक्शन स्ट्रिंग होता है और मैं सिर्फ यह कैसे पार्स, यह कैसे से केवल प्रदाता कनेक्शन स्ट्रिंग प्राप्त करने के लिए पता नहीं है।

उत्तर

33

बाहर निकलता है दो तरीके हैं।

मैं EntityConnectionStringBuilder के माध्यम से इकाई कनेक्शन स्ट्रिंग पार्स सकता है:

string entityConnectionString = ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString; 
string providerConnectionString = new EntityConnectionStringBuilder(entityConnectionString).ProviderConnectionString; 

... या अगर मैं विशिष्ट मॉडल उदाहरण उपलब्ध है, मैं इसे यहाँ से प्राप्त कर सकते हैं।

((System.Data.EntityClient.EntityConnection)ModelInstance.Connection).StoreConnection.ConnectionString;