Da Web.config nicht mehr mit ASP.NET 5 verwendet wird, müssen Sie codebasierte Konfiguration um es stattdessen zu konfigurieren. Erstellen Sie dazu eine neue Klasse, die von DbConfiguration erbt:
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());
}
}
Der erste Teil der Konfiguration ist ein Hack, um den ADO.NET-Provider zur Laufzeit zu registrieren, indem dynamisch ein neuer Konfigurationseintrag zur system.data
hinzugefügt wird Sektion. Das ist sehr hackig, scheint aber richtig zu funktionieren.
Fügen Sie die Verbindungszeichenfolge zu config.json
hinzu statt Web.config
:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
}
}
}
Ändern Sie den DbContext
um die richtige Konfiguration und Verbindungszeichenfolge zu verwenden:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
{
}
// ...
}
Registrieren Sie MyContext
im Abhängigkeitsinjektionscontainer in Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<MyContext>();
}
Dann können Sie einfach die Konstruktorinjektion verwenden, um MyContext
zu erhalten in Ihre Controller.
Weitere Details in meinem Blogbeitrag unter http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet , und ein Beispielprojekt unter https://github.com/Daniel15/EFExample