Что такое Entity Framework Core?
Большинство нетривиальных веб-приложений должны надежно выполнять операции с данными, такими как создание, чтение, обновление и удаление (CRUD). Они также должны сохранять любые изменения, внесенные этими операциями между перезапусками приложений. Для приложений .NET существует много вариантов сохранения данных, и среди них прекрасным выбором для многих приложений будет очень удобное для пользователя решение .NET Entity Framework (EF) Core.
Общие сведения об Entity Framework Core
EF Core — это легкая, расширяемая, открытая и кросс-платформенная технология доступа к данным в приложениях .NET.
EF Core можно использовать в качестве объектно-реляционного сопоставителя (ORM).
- Позволяет разработчикам .NET работать с базой данных с использованием объектов .NET.
- Устраняет необходимость в большей части кода для доступа к данным, который обычно приходится писать.
EF Core поддерживает большое количество популярных баз данных, включая SQLite, MySQL, PostgreSQL, Oracle и Microsoft SQL Server.
Модель
В EF Core доступ к данным осуществляется с помощью модели. Модель состоит из классов сущностей и объекта контекста, который представляет сеанс взаимодействия с базой данных. Объект контекста позволяет выполнять запросы и сохранять данные.
Класс сущности
В этом сценарии вы реализуете API управления магазином пиццы, поэтому используется Pizza
класс сущностей. Пиццы в вашем магазине имеют имя и описание. Кроме того, им нужен идентификатор, позволяющий API и базе данных идентифицировать их. Класс Pizza
сущностей, используемый в приложении, определяет пиццы:
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
Класс контекста
Это приложение имеет только один класс сущности, но большинство приложений имеют несколько классов сущностей. Класс контекста отвечает за отправку запросов и сохранение данных в классах сущностей, а также за создание подключения к базе данных и управление им.
Выполнение операций CRUD с помощью EF Core
После настройки EF Core вы можете использовать ее для выполнения операций CRUD с классами сущностей. На этой основе вы будете создавать другие классы C#, делегируя операции с базой данных классу контекста. Поставщики баз данных в свою очередь преобразуют их в язык запросов, зависящий от базы данных. В качестве примера можно привести SQL для реляционной базы данных. Запросы всегда выполняются в базе данных, даже если результирующие сущности уже существуют в контексте приложения.
Запрос данных
Объект контекста предоставляет класс коллекции для каждого типа сущности. В приведенном выше примере класс контекста предоставляет коллекцию объектов Pizza
в виде Pizzas
. Если у нас есть экземпляр класса контекста, можно получить из базы данных полный список пицц:
var pizzas = await db.Pizzas.ToListAsync();
Вставка данных
Тот же объект контекста позволяет добавить новую пиццу:
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
Удаление данных
Операции удаления выполняются очень просто. Нужен только идентификатор удаляемого элемента:
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
Обновление данных
Аналогичным образом можно обновить существующую пиццу:
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();
Использование выполняющейся в памяти базы данных с помощью EF Core
EF Core включает в себя поставщик выполняющейся в памяти базы данных, который можно использовать для тестирования приложения. Поставщик базы данных в памяти полезен для тестирования и разработки, но он не должен использоваться в рабочей среде. В следующем уроке вы примените поставщик выполняющейся в памяти базы данных для создания базы данных и выполнения в ней операций CRUD.