Co je Entity Framework Core?
Většina netriviálních webových aplikací potřebuje spolehlivě spouštět operace s daty, jako jsou vytváření, čtení, aktualizace a odstranění (CRUD). Mezi restartováním aplikace je také potřeba zachovat všechny změny provedené těmito operacemi. I když existují různé možnosti pro zachování dat v aplikacích .NET, Entity Framework (EF) Core je uživatelsky přívětivé řešení a skvěle se hodí pro mnoho aplikací .NET.
Principy EF Core
EF Core je jednoduchá, rozšiřitelná, opensourcová a multiplatformní technologie pro přístup k datům pro aplikace .NET.
EF Core může sloužit jako objektově-relační mapovač, který:
- Umožňuje vývojářům .NET pracovat s databází pomocí objektů .NET.
- Eliminuje potřebu většiny kódu pro přístup k datům, který je obvykle třeba napsat.
EF Core podporuje velký počet oblíbených databází, včetně SQLite, MySQL, PostgreSQL, Oracle a Microsoft SQL Serveru.
Model
S EF Core se přístup k datům provádí pomocí modelu. Model se skládá z tříd entit a kontextového objektu, který představuje relaci s databází. Kontextový objekt umožňuje dotazování a ukládání dat.
Třída entity
V tomto scénáři implementujete rozhraní API pro správu obchodů s pizzou, takže používáte Pizza třídu entit. Pizzy ve vašem obchodě mají název a popis. Potřebují také ID, které umožní rozhraní API a databázi identifikovat. Třída Pizza entity, kterou používáte ve své aplikaci, identifikuje pizzy:
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
Třída kontextu
Tato aplikace má pouze jednu třídu entit, ale většina aplikací má více tříd entit. Třída kontextu zodpovídá za dotazování a ukládání dat do tříd entit a za vytváření a správu připojení k databázi.
Provádění operací CRUD pomocí EF Core
Po nakonfigurování EF Core ho můžete použít k provádění operací CRUD ve třídách entit. Pak můžete vyvíjet proti třídám jazyka C#, delegovat databázové operace do třídy kontextu. Zprostředkovatelé databází ho následně překládají do dotazovacího jazyka specifického pro databázi. Příkladem je SQL pro relační databázi. Dotazy se vždy spouštějí v databázi, i když entity vrácené ve výsledku již v kontextu existují.
Zadávání dotazů na data
Kontextový objekt zveřejňuje třídu kolekce pro každý typ entity. V předchozím příkladu třída kontextu zveřejňuje kolekci Pizza objektů jako Pizzas. Vzhledem k tomu, že máme instanci třídy kontextu, můžete dotazovat databázi pro všechny pizzy:
var pizzas = await db.Pizzas.ToListAsync();
Vložení dat
Stejný kontextový objekt můžete použít k vložení nové pizzy:
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
Odstranění dat
Operace odstranění jsou jednoduché. Vyžadují, aby byla odstraněna pouze ID položky:
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
Aktualizace dat
Podobně můžete aktualizovat stávající pizzu:
int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" };
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
pizza.Description = updatepizza.Description;
pizza.Name = updatepizza.Name;
await db.SaveChangesAsync();
Použití databáze v paměti EF Core
EF Core obsahuje zprostředkovatele databáze v paměti, který můžete použít k otestování aplikace. Zprostředkovatel databáze v paměti je užitečný pro testování a vývoj, ale neměl by se používat v produkčním prostředí. V další lekci použijete zprostředkovatele databáze v paměti k vytvoření databáze a provádění operací CRUD.