Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам Entity Framework 6 с MySQL в ASP.NET 5?

Тъй като Web.config вече не се използва с ASP.NET 5, трябва да използвате конфигурация, базирана на код за да го конфигурирате вместо това. За да направите това, създайте нов клас, който наследява от 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());
    }
}

Първата част от конфигурацията е хак за регистриране на доставчика на ADO.NET по време на изпълнение, чрез динамично добавяне на нов запис за конфигурация към system.data раздел. Това е много хакерско, но изглежда работи правилно.

Добавете низа за връзка към config.json вместо Web.config :

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

Променете DbContext за да използвате правилната конфигурация и низ за връзка:

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

Регистрирайте MyContext в контейнера за инжектиране на зависимост в Startup.cs :

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

След това можете просто да използвате инжектиране на конструктор, за да получите MyContext във вашите контролери.

Повече подробности в моя публикация в блога на адрес http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet и примерен проект на адрес 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. Показване на индекси в MySQL таблица

  2. docker-compose mysql init sql не се изпълнява

  3. mysql със стойности, разделени със запетая

  4. Ключът MySQL UNIQUE не работи

  5. Дублиран запис при INSERT след DELETE от таблицата в транзакцията