Entity Framework Core 7 (EF Core). Введение

Entity Framework (EF) Core — библиотека доступа к данным, представляющая ORM-технологию (object-relational mapping — отображения данных на реальные объекты). Преимуществом этой технологии является то, что мы можем практически полностью абстрагироваться от используемой базы данных и работать с данными, как с набором классов и объектов, независимо от того из какого источника мы получаем данные — из БД SQLite, MySQL и т.д. EF Core устраняет необходимость в большей части кода для доступа к данным, который обычно приходится писать, что является серьезным преимуществом этой технологии.

Entity Framework Core поддерживает большое количество СУБД, вот только некоторые из них: Azure SQL, SQL Server, SQLite, MySQL, PostgreSQL, Oracle DB. Технически, EF Core может работать с любой реляционной СУБД, если для неё разработан свой провайдер.

Так как EF Core предоставляет нам универсальный API для работы с базами данных, то это значительно упрощает для нас переход (в случае необходимости) из одной СУБД в другую. Например, если мы разрабатывали изначально проект с использованием MySQL, а затем, по каким-либо причинам, нам потребуется перейти на PostgreSQL, то, в этом случае, нам придется только изменить конфигурацию подключения к базе данных, а код, работающий с данными останется без изменений.

Сущность vs объект

Если при изучении .NET C# мы говорим об объектах и классах, то в Entity Framework центральным понятием является сущность (entity). По большому счёту, оба определения — «сущность» и «объект» можно считать идентичными. Как и объект в C#, сущность в EF Core определяет набор данных, связанных с объектом реального мира. Например, когда мы учились работать с классами и объектами в C#, то мы создавали объекты класса Building (здание) и каждый объект наделялся определенными свойствами — длина, ширина, количество окон и т.д. При этом, мы бы могли добавить не только простые свойства типов int, string и т.д., но и использовать в качестве свойств другие объекты, получая объекты любой сложности. Точно также обстоит дело в EF Core с сущностями и, при этом, мы при работе с EF Core оперируем не таблицами БД и значениями полей в них, а объектами и их коллекциями. Единственное различие между объектами C# и сущностями EF Core может заключаться в том, что любая сущность EF Core должна содержать хотя бы одно уникальное свойство (ключ), которое отличает эту сущность от всех остальных. Чаще всего, таким свойством будет свойство с именем Id.

Поэтому, договоримся, что, в дальнейшем, в зависимости от контекста мы будем использовать оба понятия «объект» и «сущность», как равнозначные.

Как и пр работе с конкретными базами данных между сущностями могут устанавливаться связи — «один-к-одному», «один-ко-многим», «многие-ко-многим» и т.д.

LINQ

В ED Core для манипуляции с данными активно используется LINQ, поэтому, если Вы ещё не знакомы с запросами и методами расширения LINQ, то самое время изучить это руководство, прежде, чем начинать изучение EF Core. Использование LINQ позволяет сделать запросы данных «универсальными» вне зависимости от того к какой СУБД мы обращаемся — на уровне нашего проекта мы оперируем известными нам методами доступа к данным, например, Where, FirstOrDefault и другими, а EF Core уже транслирует наши запросы в выражения SQL, подходящие для конкретной базы данных.

БД для этого руководства

Так как в EF Core поддерживается множество различных СУБД, то стоит сразу оговорить момент — с какой БД мы будем работать при изучении EF Core. Так уж сложилось, что, в последнее время мне довольно много приходится работать с MySQL. Поэтому, в дальнейшем все примеры будут рассматриваться в контексте работы с MySQL, а примеры будут разрабатываться для приложения Blazor Server. При этом, вы можете воспроизводить примеры (возможно, с минимальными изменениями) в любых типах приложений и для любой удобной для вас СУБД.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии