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ází. EF Core je rozhraní API pro přístup k datům, které umožňuje pracovat s databází pomocí objektů CLR (Plain Old Common Runtime Language) .NET a syntaxe LINQ (Language Integrated Query) se silnými typy.
V EF Core se databáze abstrahuje za .NET POCO. EF Core zpracovává přímou interakci se základní databází. Při použití tohoto rozhraní API můžete strá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 v entitách.
- Namapovat více databázových tabulek na jednu entitu jazyka C#.
- Řešení problémů se souběžností, 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) silného typu.
- Získejte přístup k více databázím, včetně SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL a dalších.
- Vytvořte model domény z existující databáze.
- Spravujte schéma databáze na základě doménového modelu.
- Umožňuje potvrdit změny v grafech složitých, hlubokých nebo širokých objektů souvisejících entit pomocí volání jedné 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ích řetězců, protokolování a modelu, který se používá 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.
Poskytovatel databáze:
- Je knihovna modulů plug-in navržená pro konkrétní databázový stroj, jako je SQL Server, Azure Cosmos DB nebo PostgreSQL.
- Přeloží 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 hlavní způsoby synchronizace modelu EF Core a schématu databáze:
- Migrace (model jako zdroj pravdivých informací)
- Zpětná analýza (databáze jako zdroj pravdivých informací)
Pokud si chcete vybrat mezi těmito možnostmi, rozhodněte se, jestli je zdrojem pravdivých informací 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 synchronizované s datovým modelem aplikace, a přitom zachovat stávající data 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ává aktuální model se snímkem předchozího modelu a zjišťuje rozdíly. Vygeneruje se kód jazyka C# pro implementaci změn. Soubory jazyka C# je možné upravit pro vlastní chování nebo na počáteční data. Soubory se sledují ve správě zdrojového kódu projektu stejně jako jakýkoli jiný zdrojový soubor.
Po vygenerování nové migrace je možné ji na databázi použít různými způsoby. EF Core zaznamenává všechny použité migrace do speciální tabulky historie. Tabulka historie uchovává záznamy o tom, které migrace byly použity.
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á u existujících nebo sdílených databází, které spravuje správce databáze.
V další lekci začnete s EF Core pomocí migrace.