Entity Framework a MySQL

ASP.NET MVC

SSŠVT


Entity Framework a MySQL

Pokud chceme místo SQL Serveru od Microsoftu použít databázi MySQL/MariaDB, je třeba nakonfigurovat příslušným způsobem ORM vrstvu (v našem případě Entity Framework Core).

Nejprve stručně:

  1. Visual Studio Code - plugin pro MySQL
  2. Připojit ke školní MySQL databázi
  3. Vytvořit tabulky
  4. Visual Studio - NuGet pro Entity Framework konektor k MySQL
  5. Connection string k MySQL databázi
  6. Konfigurační třída Startup
  7. Tabulky pro ASP.NET autentizaci

Nyní bod po bodu detailněji.


Visual Studio Code - plugin pro MySQL

Ve Visual Studio Code přidáme plugin MySQL od vývojáře "cweijan" (aktuální verze 4.2.0) (v logu má delfína).

Blue dolphin

Připojit ke školní MySQL databázi

Ve VS Code po nainstalování pluginu pro MySQL klikneme na svislé nástrojové liště na ikonu databáze (3 disky na sobě).

Vpravo nahoře klikneme na symbol "+" pro přidání nového připojení.


Vytvořit tabulky

Vytvoříme si potřebné tabulky.

Hinty pro "dialekt" SQL na MySQL/MariaDB databázích. Pokud máme kód pro vytvoření tabulek na databázi Microsoft SQL Server, stačí upravit následující:

Mějme například takovouto tabulku na MSSQL:

CREATE TABLE ES_FILE
(
    ID                 INT             IDENTITY(1,1)      NOT NULL,
    FILE_NAME          VARCHAR(300)                       NOT NULL,
    DISPLAY_NAME       NVARCHAR(300)                          NULL,
    CONTENTS_BASE64    VARCHAR(MAX)                           NULL,

    CONSTRAINT PK_ES_FILE PRIMARY KEY ( ID )
);
        

Její vytvářecí skript na MySQL může vypadat nějak takto:

CREATE TABLE ES_FILE
(
    ID                 INT             AUTO_INCREMENT     NOT NULL,
    FILE_NAME          VARCHAR(300)                       NOT NULL,
    DISPLAY_NAME       VARCHAR(300)    CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci    NULL,
    CONTENTS_BASE64    VACHAR(8192)                           NULL,

    CONSTRAINT PK_ES_FILE PRIMARY KEY ( ID )
);
        

Visual Studio - NuGet pro Entity Framework konektor k MySQL

Ve Visual Studiu otevřít GUI pro NuGet package manager.

Vybrat záložku "Browse" a do vyhledávacího pole zadat "MySql.EntityFrameworkCore".

Nainstalovat ten balíček MySql.EntityFrameworkCore (verze 5.0.x).


Connection string k MySQL databázi

V souboru appsettings.json v sekci "ConnectionStrings" přidáme nový connection string pro MySQL.

V následujícím příkladu si upravte jméno databáze, uživatelské jméno a heslo:

"MysqlSchoolConnection": "server=mysqlstudenti.litv.sssvt.cz;port=3306;database=foltyn_db2;user=foltynread;password=123456",
        

Konfigurační třída Startup

Podle toho, jak jsme pojmenovali připojovací řetězec (connection string) v předchozím kroku, musíme provést konfiguraci ve třídě Startup.

Ve třídě Startup najdeme metodu ConfigureServices.

V metodě ConfigureServices nahradíme konfiguraci "options.UseSqlServer" novou konfigurací pro MySQL (pozor na jméno vašeho connection stringu - v tomto příkladu se connection string jmenuje MysqlSchoolConnection):

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseMySQL(
        Configuration.GetConnectionString("MysqlSchoolConnection")));
        

Tabulky pro ASP.NET autentizaci

Nakonec (protože to není věc od Microsoftu) musíme ručně vygenerovat tabulky pro ASP.NET identity. Jedná se o tabulky, jejichž jméno začíná na AspNet... (např. AspNetUsers). Tento krok je potřeba pouze v případě, že chceme použít ASP.NET Identity framework pro registraci a login.

Skript (v MySQL dialektu jazyka SQL) pro vygenerování zmíněných tabulek je zde.