Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać Entity Framework 6 z MySQL w ASP.NET 5?

Ponieważ Web.config nie jest już używany z ASP.NET 5, musisz użyć konfiguracja oparta na kodzie aby go skonfigurować. Aby to zrobić, utwórz nową klasę, która dziedziczy po 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());
    }
}

Pierwsza część konfiguracji to hack do zarejestrowania dostawcy ADO.NET w czasie wykonywania, poprzez dynamiczne dodanie nowego wpisu konfiguracji do system.data Sekcja. Jest to bardzo dziwaczne, ale wygląda na to, że działa poprawnie.

Dodaj parametry połączenia do config.json zamiast Web.config :

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

Zmodyfikuj DbContext aby użyć prawidłowej konfiguracji i parametrów połączenia:

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

Zarejestruj MyContext w kontenerze iniekcji zależności w Startup.cs :

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

Następnie możesz po prostu użyć wstrzyknięcia konstruktora, aby uzyskać MyContext do swoich kontrolerów.

Więcej szczegółów w moim poście na blogu pod adresem http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet oraz przykładowy projekt pod adresem https://github.com/Daniel15/EFExample




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwracaj tylko wartości liczbowe w MySQL

  2. Jak przetworzyć datę 0000-00-00 w zapytaniu jdbc MySQL?

  3. Błąd:nieoczekiwane zamknięcie MySQL. Podczas próby uruchomienia Mysql na Xamppie

  4. Jak uzyskać wartości wierszy z datagridview i przekazać je do innego formularza za pomocą przycisku w tym samym wierszu?

  5. Tabela czyszczenia MySQL ze zduplikowanych wpisów ORAZ ponownie połącz FK w tabeli zależnej