Общие сведения об Entity Framework Core
Entity Framework Core (EF Core) — это реляционная реляционная карта (ORM). ORM предоставляет слой между моделью домена, реализуемой в коде и базе данных. EF Core — это API доступа к данным, который позволяет взаимодействовать с базой данных с помощью стандартных объектов языка CLR (CLR) .NET и строго типизированного синтаксиса языка LINQ.
В EF Core база данных абстрагируется за POCOs .NET. EF Core обрабатывает прямое взаимодействие с базовой базой данных. При использовании этого API вы можете тратить меньше времени на преобразование запросов в базу данных и запись SQL и больше времени, фокусируясь на важной бизнес-логике.
EF Core позволяет выполнять такие задачи:
- Загрузка данных в виде объектов C# (сущностей).
- Добавление, изменение и удаление данных путем вызова методов в сущностях.
- Сопоставление нескольких таблиц базы данных с одной сущностью C#.
- Решение проблем параллелизма, возникающих, когда несколько пользователей одновременно пытаются обновить одну и ту же запись.
- Используйте синтаксис LINQ (System.Linq) для запроса к базе данных.
- Доступ к нескольким базам данных, включая SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL и многое другое.
- Создание модели предметной области на основе существующей базы данных.
- Управление схемой базы данных на основе модели предметной области.
- Зафиксируйте изменения в сложных, глубоких или широких графах объектов связанных сущностей с помощью одного вызова метода.
Рассмотрение архитектуры EF Core
На следующей схеме показана архитектура EF Core:
DbContext — это специальный класс, представляющий единицу работы. DbContext
предоставляет методы, которые можно использовать для настройки параметров, строка подключения, ведения журнала и модели, используемой для сопоставления домена с базой данных.
Классы, производные от DbContext
:
- Представляют сеанс работы с базой данных.
- Сохраняют и запрашивают экземпляры сущностей.
- Включите свойства типа
DbSet<T>
, представляющего таблицы в базе данных.
Поставщик EF Core преобразует изменения графа объекта в SQL.
Поставщик базы данных:
- Подключаемый модуль библиотеки, предназначенный для конкретного ядра СУБД, например SQL Server, PostgreSQL или Azure Cosmos DB.
- Преобразовывает вызовы методов и запросов LINQ в вызовы и запросы на основе собственного диалекта SQL базы данных.
- Расширяет возможности EF Core для включения функций, уникальных для ядра СУБД.
Управление схемами базы данных
EF Core предоставляет два основных способа поддержания модели EF Core и схемы базы данных в синхронизации:
- Миграции (модель в качестве источника истины)
- Обратная инженерия (база данных в качестве источника истины)
Чтобы выбрать один из этих вариантов, определите, является ли модель EF Core или схема базы данных источником истины.
Миграции
В реальных проектах модели данных изменяются по мере реализации функций приложения. При добавлении новых сущностей или их удалении схемы базы данных должны меняться соответствующим образом. Функция миграции EF Core позволяет постепенно обновлять схему базы данных, чтобы обеспечить синхронизацию с моделью данных приложения при сохранении существующих данных в базе данных.
Когда вносится изменение модели данных, разработчик использует средства EF Core для добавления соответствующей миграции. EF Core сравнивает текущую модель с моментальным снимком предыдущей модели, чтобы определить различия. Создается код на C# для применения изменений. Файлы C# можно изменить для пользовательских действий или начальных данных. Файлы отслеживаются в системе управления версиями проекта, как и любой другой исходный файл.
После создания новой миграции его можно применить к базе данных различными способами. EF Core записывает все примененные миграции в специальную таблицу журнала. В таблице журнала хранится запись о том, какие миграции были применены.
Обратное проектирование
Реконструирование — это процесс формирования шаблонов классов модели сущностей и класса DbContext
на основе схемы базы данных. Этот подход часто используется с существующими или общими базами данных, которыми управляет администратор базы данных.
В следующем уроке вы приступите к работе с EF Core с помощью миграции.