Entity Framework je populární ORM (Object-Relational Mapping) framework pro aplikace v .NET, který vám umožňuje pracovat s databází. Při použití Entity Frameworku, si můžete vybrat mezi dvěma hlavními přístupy: Code First a Database First. V tomto případě chcete pracovat s databází MySQL pomocí přístupu Database First, což znamená, že generujete třídy entit z existující databáze. Vygenerování modelových tříd z DB tabulek se nazývá scaffolding. Dnes si ukážeme jak toho dosáhnout v .NET6 a Entity Frameworku pro MySql databázi.
Přes Package Manager Console nainstalujte Entity Framework Core a MySQL Provider
Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.Design Install-Package Pomelo.EntityFrameworkCore.MySql
Vygenerujeme entity z tabulek DB
Použijte Entity Framework Core CLI k vytvoření databáze. Otevřete příkazový řádek, přejděte do adresáře vašeho projektu a použijte:
dotnet ef dbcontext scaffold "server=localhost;user=root;password=xxx;database=app_cz" "Pomelo.EntityFrameworkCore.MySql" --output-dir Models -f
Tím pro každou tabulku vygenerujeme do složky Models odpovídající modelovou třídu a DbContex soubor (v našem případě AppCzContext.cs)
Pozor: ve vygenerovaném AppCzContext.cs je automaticky doplněn server a přístupové údaje k DB. Není vhodné tyto údaje na tomto místě držet, měly by se načítat z appsettings.json. Ale o tom zase někdy příště 🙂
Jednoduché použití DbContextu
Získáme všechny uživatele:
using (var dbContext = new AppCzContext()) { var users = dbContext.Users.ToList(); }
Pozor: jedná se o jednoduchou ukázku. Lepší řešení je si přes DI injecntou DB context. Ale o tom zaseněkdy příště