sql >> Databasteknik >  >> RDS >> Mysql

Hur använder jag Entity Framework 6 med MySQL i ASP.NET 5?

Eftersom Web.config inte längre används med ASP.NET 5 måste du använda kodbaserad konfiguration för att konfigurera den istället. För att göra det, skapa en ny klass som ärver från 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());
    }
}

Den första delen av konfigurationen är ett hack för att registrera ADO.NET-leverantören vid körning, genom att dynamiskt lägga till en ny konfigurationspost till system.data sektion. Det här är väldigt hackigt, men verkar fungera korrekt.

Lägg till anslutningssträngen till config.json istället för Web.config :

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

Ändra DbContext för att använda korrekt konfiguration och anslutningssträng:

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

Registrera MyContext i beroendeinjektionsbehållaren i Startup.cs :

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

Sedan kan du bara använda konstruktorinjektion för att få MyContext i dina kontroller.

Mer information i mitt blogginlägg på http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet , och ett exempelprojekt på https://github.com/Daniel15/EFExample




  1. Hur kommer du till gränser på 8060 byte per rad och 8000 per (varchar, nvarchar) värde?

  2. oracle varchar till nummer

  3. Skaffar rotförälder

  4. Kommaseparerade värden