sql >> Database >  >> RDS >> Mysql

Hoe gebruik ik Entity Framework 6 met MySQL in ASP.NET 5?

Aangezien Web.config niet langer wordt gebruikt met ASP.NET 5, moet u code-gebaseerde configuratie om het in plaats daarvan te configureren. Om dit te doen, maakt u een nieuwe klasse aan die erft van 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());
    }
}

Het eerste deel van de configuratie is een hack om de ADO.NET-provider tijdens runtime te registreren door dynamisch een nieuw configuratie-item toe te voegen aan de system.data sectie. Dit is erg omslachtig, maar lijkt correct te werken.

Voeg de verbindingsreeks toe aan config.json in plaats van Web.config :

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
    }
  }
}

Wijzig de DbContext om de juiste configuratie en verbindingsreeks te gebruiken:

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
    public MyContext(IConfiguration config)
      : base(config["Data:DefaultConnection:ConnectionString"])
      {
      }
      // ...
}

Registreer MyContext in de afhankelijkheidsinjectiecontainer in Startup.cs :

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddScoped<MyContext>();
}

Dan kunt u gewoon constructor-injectie gebruiken om MyContext . te krijgen in uw controllers.

Meer details in mijn blogpost op http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet , en een voorbeeldproject op https://github.com/Daniel15/EFExample




  1. Codeigniter-model met meerdere update-voorwaarden met behulp van handmatige waar-instructie

  2. Fout bij importeren van SQL-dump in MySQL:onbekende database / kan geen database maken

  3. WHERE-component in INSERT-instructie met mysql/php

  4. Hoe krijg ik informatie over een index- en tabeleigenaar in Oracle?