प्रयुक्त आधार का तर्क DbContext कन्स्ट्रक्टर
nameOrConnectionString . कहा जाता है . इसलिए यह कॉन्फ़िगरेशन फ़ाइल से कनेक्शन स्ट्रिंग के नाम का समर्थन करता है, या आपके मामले में एक वास्तविक कनेक्शन स्ट्रिंग की तरह।
बाद के साथ समस्या यह है कि यह प्रदाता का नाम . निर्दिष्ट करने की अनुमति नहीं देता है कॉन्फ़िगरेशन से आने वाले पूर्व के साथ, जिस स्थिति में EF defaultConnectionFactory में निर्दिष्ट एक का उपयोग करता है कॉन्फ़िगरेशन तत्व, जो आपके मामले में System.Data.Entity.Infrastructure.SqlConnectionFactory है , दूसरे शब्दों में - एसक्यूएल सर्वर , इसलिए port समर्थित अपवाद नहीं।
समस्या को ठीक करने के कई तरीके हैं।
(ए) defaultConnectionFactoryबदलें विन्यास:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(बी) नामित कॉन्फ़िगरेशन कनेक्शन स्ट्रिंग का उपयोग करें और प्रदाता को स्पष्ट रूप से निर्दिष्ट करें:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
और कंस्ट्रक्टर को
. में बदलेंpublic MyDB()
{
// ...
}
या अगर नाम आपके DbContext . से अलग है व्युत्पन्न वर्ग का नाम:
public MyDB() : base(connection_string_name)
{
// ...
}
(सी) का इस्तेमाल करें DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}