Co to jest Entity Framework Core?
Większość nietriwialnych aplikacji internetowych musi niezawodnie uruchamiać operacje na danych, takie jak tworzenie, odczytywanie, aktualizowanie i usuwanie (CRUD). Muszą również utrwalić wszelkie zmiany wprowadzone przez te operacje między ponownym uruchomieniem aplikacji. Chociaż istnieją różne opcje utrwalania danych w aplikacjach platformy .NET, program Entity Framework (EF) Core to przyjazne dla użytkownika rozwiązanie i doskonałe rozwiązanie dla wielu aplikacji platformy .NET.
Omówienie platformy EF Core
EF Core to uproszczona, rozszerzalna, open source i międzyplatformowa technologia dostępu do danych dla aplikacji platformy .NET.
Program EF Core może służyć jako maper obiektowo-relacyjny, który:
- Umożliwia deweloperom platformy .NET pracę z bazą danych przy użyciu obiektów platformy .NET.
- Eliminuje konieczność pisania większości kodu dostępu do danych.
Program EF Core obsługuje dużą liczbę popularnych baz danych, w tym SQLite, MySQL, PostgreSQL, Oracle i Microsoft SQL Server.
Model
W przypadku platformy EF Core dostęp do danych jest wykonywany przy użyciu modelu. Model składa się z klas jednostek i obiektu kontekstu, który reprezentuje sesję z bazą danych. Obiekt kontekstu umożliwia wykonywanie zapytań i zapisywanie danych.
Klasa jednostki
W tym scenariuszu implementujesz interfejs API zarządzania sklepem pizzerii, więc używasz Pizza klasy jednostek. Pizze w sklepie mają nazwę i opis. Potrzebują również identyfikatora, aby zezwolić interfejsowi API i bazie danych na ich identyfikację. Klasa Pizza jednostek używana w aplikacji identyfikuje pizze:
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
Klasa kontekstu
Ta aplikacja ma tylko jedną klasę jednostek, ale większość aplikacji ma wiele klas jednostek. Klasa kontekstu jest odpowiedzialna za wykonywanie zapytań i zapisywanie danych w klasach jednostek oraz tworzenie połączenia bazy danych i zarządzanie nim.
Wykonywanie operacji CRUD za pomocą programu EF Core
Po skonfigurowaniu platformy EF Core można jej użyć do wykonywania operacji CRUD na klasach jednostek. Następnie można opracowywać względem klas języka C#, delegując operacje bazy danych do klasy kontekstu. Dostawcy baz danych z kolei tłumaczą go na język zapytań specyficzny dla bazy danych. Przykładem jest sql dla relacyjnej bazy danych. Zapytania są zawsze wykonywane względem bazy danych, nawet jeśli jednostki zwrócone w wyniku już istnieją w kontekście.
Zapytania o dane
Obiekt kontekstu uwidacznia klasę kolekcji dla każdego typu jednostki. W poprzednim przykładzie klasa kontekstu uwidacznia kolekcję Pizza obiektów jako Pizzas. Biorąc pod uwagę, że mamy wystąpienie klasy kontekstu, możesz wykonać zapytanie dotyczące bazy danych dla wszystkich pizz:
var pizzas = await db.Pizzas.ToListAsync();
Wstawianie danych
Możesz użyć tego samego obiektu kontekstu, aby wstawić nową pizzę:
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
Usuwanie danych
Operacje usuwania są proste. Wymagają one usunięcia tylko identyfikatora elementu:
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
Aktualizowanie danych
Podobnie możesz zaktualizować istniejącą pizzę:
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();
Korzystanie z bazy danych programu EF Core w pamięci
Program EF Core zawiera dostawcę bazy danych w pamięci, który może służyć do testowania aplikacji. Dostawca bazy danych w pamięci jest przydatny do testowania i programowania, ale nie powinien być używany w środowisku produkcyjnym. W następnej lekcji użyjesz dostawcy bazy danych w pamięci, aby utworzyć bazę danych i wykonać na niej operacje CRUD.