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ě:
Nyní bod po bodu detailněji.
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).
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ří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í:
IDENTITY(1,1)
píšeme AUTO_INCREMENT
NVARCHAR
použijeme standardní VARCHAR
VARCHAR
byly problémy s kódováním diakritiky, je možné to opravit pomocí COLLATE
MAX
u VARCHAR
nahradíme vysokým číslem, např. 16384.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 ) );
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).
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",
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")));
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.