Что такое 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.