चूंकि Web.config अब ASP.NET 5 के साथ प्रयोग नहीं किया जाता है, इसलिए आपको कोड-आधारित कॉन्फ़िगरेशन इसके बजाय इसे कॉन्फ़िगर करने के लिए। ऐसा करने के लिए, एक नया वर्ग बनाएं जो DbConfiguration से विरासत में मिले:
public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
// Register ADO.NET provider
var dataSet = (DataSet)ConfigurationManager.GetSection("system.data");
dataSet.Tables[0].Rows.Add(
"MySQL Data Provider",
".Net Framework Data Provider for MySQL",
"MySql.Data.MySqlClient",
typeof(MySqlClientFactory).AssemblyQualifiedName
);
// Register Entity Framework provider
SetProviderServices("MySql.Data.MySqlClient", new MySqlProviderServices());
SetDefaultConnectionFactory(new MySqlConnectionFactory());
}
}
कॉन्फ़िगरेशन का पहला भाग रनटाइम पर ADO.NET प्रदाता को पंजीकृत करने के लिए एक हैक है, गतिशील रूप से system.data
में एक नई कॉन्फ़िगरेशन प्रविष्टि जोड़कर खंड। यह बहुत हैकी है, लेकिन यह सही ढंग से काम करता प्रतीत होता है।
कनेक्शन स्ट्रिंग को config.json
. में जोड़ें के बजाय Web.config
:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
}
}
}
DbContext
को संशोधित करें सही कॉन्फ़िगरेशन और कनेक्शन स्ट्रिंग का उपयोग करने के लिए:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
{
}
// ...
}
रजिस्टर करें MyContext
Startup.cs
. में डिपेंडेंसी इंजेक्शन कंटेनर में :
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<MyContext>();
}
फिर आप MyContext
. प्राप्त करने के लिए केवल कंस्ट्रक्टर इंजेक्शन का उपयोग कर सकते हैं अपने नियंत्रकों में।
मेरे ब्लॉग पोस्ट में अधिक विवरण http://dan.cx/ 2015/08/इकाई-ढांचे-6-mysql-aspnet , और https://github.com/Daniel15/EFExample पर एक नमूना प्रोजेक्ट