Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser Entity Framework 6 avec MySQL dans ASP.NET 5 ?

Étant donné que Web.config n'est plus utilisé avec ASP.NET 5, vous devez utiliser configuration basée sur le code pour le configurer à la place. Pour cela, créez une nouvelle classe qui hérite de 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());
    }
}

La première partie de la configuration est un hack pour enregistrer le fournisseur ADO.NET au moment de l'exécution, en ajoutant dynamiquement une nouvelle entrée de configuration au system.data section. C'est très hacky, mais semble fonctionner correctement.

Ajoutez la chaîne de connexion à config.json plutôt que Web.config :

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

Modifier le DbContext pour utiliser la chaîne de configuration et de connexion correcte :

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

Enregistrez MyContext dans le conteneur d'injection de dépendances dans Startup.cs :

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

Ensuite, vous pouvez simplement utiliser l'injection de constructeur pour obtenir MyContext dans vos manettes.

Plus de détails dans mon article de blog à http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet , et un exemple de projet sur https://github.com/Daniel15/EFExample