sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger jeg Entity Framework 6 med MySQL i ASP.NET 5?

Da Web.config ikke længere bruges med ASP.NET 5, skal du bruge kodebaseret konfiguration for at konfigurere det i stedet. For at gøre det skal du oprette en ny klasse, der arver fra 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ørste del af konfigurationen er et hack til at registrere ADO.NET-udbyderen ved kørsel ved dynamisk at tilføje en ny konfigurationsindgang til system.data afsnit. Dette er meget hacket, men ser ud til at fungere korrekt.

Tilføj forbindelsesstrengen til config.json i stedet for Web.config :

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

Rediger DbContext for at bruge den korrekte konfiguration og forbindelsesstreng:

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

Registrer MyContext i afhængighedsinjektionsbeholderen i Startup.cs :

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

Så kan du bare bruge constructor-injection for at få MyContext ind i dine controllere.

Flere detaljer i mit blogindlæg på http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet , og et eksempelprojekt på https://github.com/Daniel15/EFExample




  1. executemany for MySQLdb fejl for stort antal rækker

  2. Flere rækker til én kommasepareret værdi i SQL Server

  3. Eksporter data fra en MySQL-database

  4. SQLSTATE[HY000] [1045] undtagelse under forbindelse til database ved hjælp af 000webhost