Principy EF Core

Dokončeno

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:

Diagram znázorňující komponenty a procesy v architektuře Entity Framework 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.

Kontrola znalostí

1.

Která třída poskytuje základní sadu operací, které můžete použít ke konfiguraci a interakci s databází?