Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich Entity Framework 6 mit MySQL in ASP.NET 5?

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