Principy EF Core
Entity Framework Core (EF Core) je objektově-relační mapovač (ORM). ORM poskytuje vrstvu mezi doménovým modelem, který implementujete v kódu a databázi. EF Core je rozhraní API pro přístup k datům, které umožňuje interakci s databází pomocí prostých starých objektů CLR (Common Runtime Language) a syntaxe LINQ (High Typed Language Integrated Query).
V EF Core se databáze abstrahuje za poCO .NET. EF Core zpracovává přímou interakci s podkladovou databází. Při použití tohoto rozhraní API můžete trávit méně času překladem požadavků do a z databáze a psaním SQL a více času se zaměřením na důležitou obchodní logiku.
S EF Core můžete:
- Načtěte data jako objekty (entity) jazyka C#.
- Přidejte, upravte a odstraňte data voláním metod u entit.
- Namapovat více databázových tabulek na jednu entitu jazyka C#.
- Zpracujte problémy souběžnosti, ke kterým dochází, když se více uživatelů současně pokusí aktualizovat stejný záznam.
- K dotazování databáze použijte syntaxi LINQ (System.Linq).
- Získejte přístup k více databázím, včetně SQL Serveru, SQLite, Azure Cosmos DB, PostgreSQL, MySQL a dalších.
- Sestavte model domény z existující databáze.
- Správa schématu databáze na základě doménového modelu
- Potvrďte změny do složitých, hlubokých nebo širokých grafů objektů souvisejících entit pomocí jednoho volání metody.
Kontrola architektury EF Core
Následující diagram znázorňuje architekturu EF Core:
DbContext je speciální třída, která představuje jednotku práce. DbContext
poskytuje metody, které můžete použít ke konfiguraci možností, připojovací řetězec, protokolování a modelu, který slouží k mapování domény na databázi.
Třídy odvozené z DbContext
:
- Představují aktivní relaci s databází.
- Ukládají instance entit a dotazují se na ně.
- Zahrnout vlastnosti typu
DbSet<T>
, které představují tabulky v databázi.
Komponenta EF Core Provider provádí překlad změn grafu objektu do SQL.
Zprostředkovatel databáze:
- Knihovna modulů plug-in, která je určená pro konkrétní databázový stroj, jako je například SQL Server, Azure Cosmos DB nebo PostgreSQL.
- Překládá volání metod a dotazy LINQ do nativního dialektu SQL databáze.
- Rozšiřuje možnosti EF Core tím, že povoluje funkce, které jsou pro daný databázový stroj jedinečné.
Správa databázových schémat
EF Core nabízí dva primární způsoby synchronizace modelu EF Core a schématu databáze:
- Migrace (model jako zdroj pravdy)
- Zpětná analýza (databáze jako zdroj pravdy)
Pokud si chcete vybrat mezi těmito možnostmi, rozhodněte se, jestli je zdrojem pravdy váš model EF Core nebo schéma databáze.
Migrace
V reálných projektech se datové modely mění při implementaci funkcí aplikace. Při přidání a odebrání nových entit je potřeba odpovídajícím způsobem změnit schémata databáze. Funkce migrace EF Core poskytuje způsob, jak přírůstkově aktualizovat schéma databáze, aby bylo možné ho udržovat v synchronizaci s datovým modelem aplikace při zachování stávajících dat v databázi.
Při zavedení změny datového modelu vývojář pomocí nástrojů EF Core přidá odpovídající migraci. EF Core porovná aktuální model se snímkem předchozího modelu a určí rozdíly. Vygeneruje se kód jazyka C# pro implementaci změn. Soubory jazyka C# můžete upravit pro vlastní chování nebo na počáteční data. Soubory se sledují ve správě zdrojového kódu projektu stejně jako v jakémkoli jiném zdrojovém souboru.
Po vygenerování nové migrace je možné ji použít pro databázi různými způsoby. EF Core zaznamenává všechny použité migrace ve speciální tabulce historie. Tabulka historie uchovává záznam o tom, které migrace se použily.
Zpětná analýza
Zpětná analýza je proces generování tříd modelu entit a DbContext
třídy založené na schématu databáze. Tento přístup se často používá s existujícími nebo sdílenými databázemi, které spravuje správce databáze.
V další lekci začnete s EF Core s využitím migrace.