Знакомство с Entity Framework Core¶
Что такое EF Core?¶
EF Core — Это библиотека, предоставляющая объектно-ориентированный способ доступа к базам данных. Она действует как инструмент объектно-реляционного отображения (Object-Relation Mapping, ORM), взаимодействуя с БД и отображая ответы БД в классы и объекты .NET, как показано на рисунке.

EF Core в основном предназначена для работы с реляционными БД. Также есть InMemory Provider, который можно использовать при тестировании.
Примечание
Начиная с .NET Core 3.0 EF Core работает и с нереляционными БД, однако здесь это не рассматривается.
Зачем использовать инструмент объектно-реляционного отображения?¶
Одно из самых больших преимуществ ORM — скорость, с которой разрабатывается приложение. ORM берет на себя такие вещи как соединение с БД, генерация SQL кода и отображение данных на POCO объекты. От программиста требуется только LINQ-запрос.
Инструменты ORM служат высокоуровневыми абстракциями по отношению к базам данных, следовательно, объем кода, необходимого для взаимодействия с БД, сокращается.
Однако, такой подход имеет и недостатки. Высокий уровень абстракции может привести к построению неэффективных запросов.
Когда следует выбирать EF Core?¶
EF Core разработан как переосмысление технологии Entity Framework 6.x (EF 6.x), появывшейся в 2008 году. API-интерфейсы EF Core спроектированы так, чтобы быть близкими к API-интерфейсам EF 6.x, хотя и не идентичны. Основные компоненты были полностью переписаны. Следовательно, EF Core — нечто отличное от EF 6.x.
Microsoft поддерживает оба фреймворка. При выборе необходимо учесть следующее:
- кросс-платформенность — EF Core 5.0 нацелен на .NET Standart, следовательно его можно использовать в кросс-платформенных приложениях, нацеленных на .NET Core 3.0 или более поздние;
- провайдеры баз данных — EF 6.x и EF Core подключаются к различным типам БД с помощью провайдеров. Число провайдеров EF Core растет, а в случае с EF 6.x их заметно меньше, особенно при работе с .NET 5;
- производительность — EF Core значительно превосходит EF 6.x в производительности, однако всё ещё уступает таким вариантам как Dapper или вручную написанные SQL-операторы;
- функции — у EF Core имеются функции, которых нет в EF 6.x, такие как операторы пакетной обработки, генерация ключей на стороне клиента, БД в памяти для тестирования1.
Отображение базы данных в код приложения¶
Отображение базы данных в код приложения
Дата создания : 2 октября 2022 г.