Перейти к содержанию

Знакомство с Entity Framework Core

Что такое EF Core?

EF Core — Это библиотека, предоставляющая объектно-ориентированный способ доступа к базам данных. Она действует как инструмент объектно-реляционного отображения (Object-Relation Mapping, ORM), взаимодействуя с БД и отображая ответы БД в классы и объекты .NET, как показано на рисунке.
Pasted image 20220405202332.png
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.

Отображение базы данных в код приложения

Отображение базы данных в код приложения


  1. таблица сравнения возможностей здесь 


Последнее обновление : 5 ноября 2023 г.
Дата создания : 2 октября 2022 г.

Комментарии

Комментарии