====== Entity Framework Core (EF Core) ====== **Entity Framework Core** je open-source, odlehčená a multiplatformní verze oblíbené technologie Entity Framework. Slouží jako most mezi vaším objektovým kódem (C#) a relační databází (SQL Server, PostgreSQL, MySQL, SQLite atd.). ===== 1. Základní principy ===== EF Core funguje na principu mapování tříd na databázové tabulky. * **Model:** Vaše C# třídy (entity), které reprezentují data. * **DbContext:** Hlavní třída, která spravuje připojení k databázi a umožňuje dotazování a ukládání dat. * **Provider:** Specifická knihovna pro konkrétní databázi (např. ''Microsoft.EntityFrameworkCore.SqlServer''). --- ===== 2. Tři přístupy k vývoji ===== ^ Přístup ^ Popis ^ | **Code First** | Nejdříve napíšete C# třídy a EF Core z nich vygeneruje databázi. (Nejpoužívanější) | | **Database First** | Máte hotovou databázi a EF Core z ní vygeneruje C# třídy (tzv. scaffolding). | | **Model First** | Návrh modelu ve vizuálním editoru (v EF Core již není nativně podporováno). | --- ===== 3. Migrace: Správa schématu ===== Migrace jsou klíčovou vlastností EF Core. Umožňují vám měnit strukturu databáze synchronizovaně s vaším kódem. * Změníte třídu v C# (např. přidáte vlastnost ''Email''). * Spustíte příkaz ''dotnet ef migrations add PřidáníEmailu''. * EF Core vygeneruje SQL skript, který aktualizuje databázi pomocí ''dotnet ef database update''. --- ===== 4. Dotazování pomocí LINQ ===== Místo psaní SQL řetězců používáte [[it:sw:linq|LINQ]]. EF Core tyto dotazy automaticky přeloží do optimalizovaného SQL pro danou databázi. using (var db = new MyDbContext()) { var uzivatele = db.Users .Where(u => u.Active) .OrderBy(u => u.Name) .ToList(); } --- ===== 5. Klíčové vlastnosti ===== * **Change Tracking:** EF Core sleduje změny, které provedete na objektech, a při volání ''SaveChanges()'' automaticky vygeneruje příkazy INSERT, UPDATE nebo DELETE. * **Eager vs. Lazy Loading:** Možnost zvolit, zda se mají související data (např. objednávky u zákazníka) načíst hned, nebo až při přístupu k nim. * **Podpora pro asynchronní operace:** Metody jako ''ToListAsync()'' nebo ''SaveChangesAsync()'' pro vysoký výkon aplikací. --- ===== 6. Oblasti použití ===== * **Backendy webových aplikací** (ASP.NET Core). * **Desktopové aplikace** (WPF, WinForms). * **Cloudové služby** a mikroslužby. ---- //Související články:// * [[it:sw:dot_net|Platforma .NET]] * [[it:sw:linq|LINQ: Dotazování v C#]] * [[it:sw:csharp|Programovací jazyk C#]] //Tagy: {{tag>programming dot-net csharp ef-core database orm development}}//