Entity Framework patřil vždy mezi mou oblíbenou technologii a nejinak je tomu i v případě Entity Framework Core. Nehodí se pro všechny druhy projektů, ale tam kde najde své uplatnění dokáže výrazně zpřehlednit aplikaci a ušetřit spoustu času.
Když se poprvé objevila metodika Code First u tradičního Entity Frameworku, pochopil jsem EF do hloubky a asi před 5 lety jsem v této oblasti zorganizoval historicky svá první školení. Mezitím se stalo hodně událostí. Vyšel nový Entity Framework Core a přes své porodní bolesti dokráčel až do verze 3.1, která vývojářům nabízí stejný komfort jako jeho tradiční verze EF. A tak se k EF Core opět vracím a seznamuji vývojáře s touto technologií.
Chcete-li s EF Core začít, rád bych v tomto článku zmínil pár postřehů a tipů, čemu byste měli věnovat pozornost. Na konci článku najdete odkaz na můj webinář, díky kterému můžete získat o této technologii pevný obecný přehled. Pojďme tedy shrnout fakta:
- EF 6 i EF Core lze použít v .NET Core 3.x, nicméně MS rozvíjí nyní pouze EF Core (aktuální verze EF Core 3.1)
- EF Core oproti EF 6 podporuje plno malých, ale užitečných funkcí
- EF Core oproti EF 6 podporuje Azure Cosmos DB + má od svého počátku InMemory provider pro testování
- EF Core oproti EF 6 ale také pár věcí postrádá (entity splitting, M:N, update modelu z DB) – většina features je plánovaná do další verze EF Core 5.0 (podzim 2020) a hlavně se bez těchto funkcí dá obejít
- EF Core oproti EF 6 některé funkce nikdy podporovat nebude (vizuální modelovátka, EDMX, různé vizuální průvodce)
Když začnete s EF Core, budete muset pochopit, jak funguje tzv. DbContext, který tvoří jádro celého ORM. V souvislosti s tím budete zároveň nastavovat konfiguraci, předávat connection strings a určovat lifestyle DbContextu v závislosti na architektuře a typu projektu. To je naštěstí víceméně vymyšlené a budete to dělat jen jednou při nastavení projektu.
Další oblastí je mapování. Technologie ctí metodiku Code First, čili všechny C# třídy s jejich vlastnostmi se musí registrovat do DbContextu tak, aby se správně promapovaly skrze provider do konečného úložiště (SQL / Sqlite, MySql, Cosmos). K tomu použijete dodatečné atributy tříd a properties nebo tzv. Fluent API, které Vám umožní držet konfiguraci mapování mimo třídy tvořící model.
V souvislosti se změnami modelu budete používat tzv. migrace. Ty reprezentují změnu modelu, která se překládá na konkrétní dotazy zvoleného úložiště (například SQL). Migrace budou součástí Vašeho projektu a budete je sdílet s ostatními vývojáři. Ti vždy migrace aplikují na své úložiště.
Kromě těchto technikálií budete chtít získávat data z úložiště a následné změny propagovat zpět v podobě updatů. K tomu hojně využijete LINQ. Zejména v dotazování Vás také čeká seznámení s tradičními přístupy pro získání jednoho záznamu, kolekcí a způsobem, jak EF Core drží určitá data v paměti a jakým způsobem sleduje změny (tzv. change tracking).
Právě oblast provádění změn na datech bude znamenat změnu myšlení pro vývojáře, kteří doposud s ORM nepracovali. Oproti tradičním přístupům totiž budete pracovat s daty v paměti a generování updatů a deletů necháte na ORM. Je to taková magie, která pracuje za Vás. Černá magie to však může být ve chvíli, když necháte ORM svobodu a bez potřebných znalostí ztratíte nad aplikací kontrolu.
Chcete se s principy Entity Framework Core seznámit blíže? Přemýšlíte nad použitím EF Core ve Vašich aplikacích? Podívejte se na mé školení EF Core…
Školení: Entity Framework Core
Naučím Vás myslet v ORM a používat EF Core v celém životním cyklu aplikace od základních modelovacích scénářů až po komplexnější modely. Naučíte se psát efektivní dotazy do databáze a ověřovat si jejich výkonnost.
Další informace o školení najdete zde…