ADO.NET Entity Framework

ADO.NET Entity Framework — открытая система объектно-реляционного отображения (ORM) для ADO.NET, изначально распространявшаяся как неотъемлемая часть .NET Framework, а начиная с версии Entity Framework 6.0 поставляется отдельно от .NET Framework[1].

Классический фреймворк, известный как Entity Framework 6 (EF6), находится в режиме поддержки: его активная разработка прекращена, и выпускаются только исправления безопасности[2]. Последней версией является 6.5.1, выпущенная 17 июня 2024 года[3].

В 2016 году был представлен современный кросс-платформенный преемник — Entity Framework Core (EF Core), который активно развивается и является основной ORM-технологией Microsoft для новых приложений[2]. Последняя стабильная версия — 9.0 (выпущена в ноябре 2024 года)[4], а выпуск версии 10.0 запланирован на ноябрь 2025 года[5].

Общие сведения
ADO.NET Entity Framework
Тип Объектно-реляционное отображение
Автор Microsoft
Разработчик .NET Foundation
Написана на C#
Интерфейс Нет (библиотека классов)
Операционные системы Windows, Linux, macOS
Языки интерфейса Английский
Первый выпуск 11 августа 2008
Последняя версия (Entity Framework 6: 17 июня 2024
Entity Framework Core: ноябрь 2025)
Кандидат в релизы EF Core: 10.0.0-rc.2 (18 октября 2025)
Репозиторий
https://github.com/dotnet/efcore github.com/dotnet/ef6<br…
Состояние Активное (EF Core)
Поддерживается (EF6)
Лицензия Apache License 2.0
Сайт learn.microsoft.com/en-u…

Обзор

Entity Framework представляет собой набор технологий в рамках ADO.NET, предназначенных для разработки программных приложений, ориентированных на работу с данными. Разработчикам подобных приложений приходится решать две разные задачи: определять объекты предметной области, их связи и бизнес-логику, а также взаимодействовать с системами хранения данных, имеющими собственные протоколы. Часто это приводит к необходимости согласовывать требования хранилищ с требованиями к архитектуре системы, что известно как «объектно-реляционное несоответствие» (object-relational impedance mismatch)[6].

Для решения таких задач были созданы различные системы ORM, позволяющие разрабатывать код, оперируя объектами и их свойствами (например, «Клиент» и «Адрес клиента») вместо прямой работы с таблицами и столбцами базы данных. ORM-подход увеличивает уровень абстракции и позволяет создавать и поддерживать приложения с меньшими затратами кода. В экосистеме Microsoft решение ORM представлено именно Entity Framework[7].

Entity Framework является технологией для серверной части приложения (backend) и не имеет собственного пользовательского интерфейса[8]. Он функционирует как часть внутренней логики приложения, невидимой для конечного пользователя[9], и может использоваться для создания программ с любым типом интерфейса: веб-приложений (например, ASP.NET), настольных (WPF, Windows Forms) или консольных[8][10]. Во всех этих случаях фреймворк служит мостом между бизнес-логикой и базой данных, в то время как за взаимодействие с пользователем отвечают другие технологии[9].

Текущий статус и развитие

На сегодняшний день пути развития классического Entity Framework и его преемника Entity Framework Core (EF Core) кардинально различаются. Entity Framework Core является флагманской технологией доступа к данным от Microsoft, находится в состоянии активной разработки и позиционируется как основная ORM-система для всех новых приложений на платформе .NET[11]. EF Core — это легковесный, кросс-платформенный и расширяемый фреймворк с открытым исходным кодом[12]. Он постоянно обновляется, получая новые функции и улучшения производительности, а мажорные версии выходят ежегодно вместе с новыми версиями .NET[11]. Например, были выпущены EF Core 8 и EF Core 9, которые привнесли значительные улучшения[13]. Microsoft публикует дорожную карту развития, согласно которой следующий стабильный релиз, EF Core 10.0, запланирован на ноябрь 2025 года. Жизненный цикл поддержки EF Core соответствует политике поддержки .NET и включает выпуски со стандартной (STS) и долгосрочной (LTS) поддержкой[14].

В свою очередь, классический ADO.NET Entity Framework (последняя основная версия — 6.x, также известный как EF6) больше не находится в активной разработке и переведён в режим поддержки. Его кодовая база считается стабильной, и добавление новых функций в него прекращено. Выпускаются только исправления, устраняющие критические уязвимости в системе безопасности. EF6 следует «Современной политике жизненного цикла» (Modern Lifecycle Policy), согласно которой поддерживается только самая последняя выпущенная версия пакета, а все предыдущие (6.0, 6.1, 6.2, 6.3, 6.4) больше не поддерживаются. Microsoft настоятельно рекомендует использовать Entity Framework Core для всех новых приложений, а также для существующих, находящихся в активной разработке[11]. При этом EF6 остаётся рабочим решением для унаследованных (legacy) проектов, тесно связанных с .NET Framework[15].

История

Entity Framework (EF6 и ранее)

Первая версия Entity Framework (EFv1) была выпущена в составе .NET Framework 3.5 Service Pack 1 и Visual Studio 2008 Service Pack 1 11 августа 2008 года. Она подверглась широкой критике, получив даже «вотум недоверия» от более тысячи разработчиков.

Вторая версия — Entity Framework 4.0 (EFv4) — появилась 12 апреля 2010 года в составе .NET 4.0 и исправила множество недостатков первой версии.

Версии 4.1 (12 апреля 2011 года) и 4.3.1 (29 февраля 2012 года) добавили поддержку подходов Code First и миграций соответственно.

Версия 5.0.0 появилась 11 августа 2012 года для .NET Framework 4.5.

Версия 6.0 была опубликована 17 октября 2013 года и стала открытым проектом под лицензией Apache License v2. В последующие годы вышли ключевые обновления: 6.1 (март 2014), 6.2 (октябрь 2017)[16]. Важным этапом стала версия 6.3 (октябрь 2019), которая обеспечила поддержку .NET Core 3.0, а версия 6.4 (декабрь 2019) стабилизировала эту функциональность[17]. Последним выпуском стала версия 6.5.1 от 17 июня 2024 года, которая исправила ошибку в пакете NuGet версии 6.5.0[3].

Entity Framework Core

В связи с переходом .NET на кроссплатформенную модель следующая версия Entity Framework создавалась с нуля. 27 июня 2016 года вышла Entity Framework Core 1.0 (изначально именовалась EF7), параллельно с релизами ASP.NET Core 1.0 и .NET Core 1.0. Переименование подчеркнуло, что это совершенно другой код, не заменяющий EF6[18].

Последующие мажорные версии выходили ежегодно в соответствии с графиком выпуска .NET:

  • EF Core 2.0 — 14 августа 2017 года[19].
  • EF Core 3.0 — 23 сентября 2019 года[20]. Версия 3.1 (3 декабря 2019) стала выпуском с долгосрочной поддержкой (LTS).
  • EF Core 5.0 — 10 ноября 2020 года. Его поддержка завершилась 10 мая 2022 года[5].
  • EF Core 6.0 — 10 ноября 2021 года, версия с долгосрочной поддержкой (LTS)[5].
  • EF Core 7.0 — 8 ноября 2022 года[21]. Поддержка этой версии прекратилась 14 мая 2024 года[2].
  • EF Core 8.0 — 14 ноября 2023 года, версия с долгосрочной поддержкой (LTS)[22].
  • EF Core 9.0 — ноябрь 2024 года[4].
  • EF Core 10.0 — выпуск запланирован на ноябрь 2025 года[5].

Сравнение с Entity Framework 6

Entity Framework Core (EF Core) не является прямым продолжением Entity Framework 6 (EF6), а представляет собой полностью переписанный фреймворк с фундаментальными архитектурными отличиями. EF Core был создан с нуля как легковесная, модульная и кросс-платформенная система, ориентированная на современные приложения, в то время как EF6 остаётся зрелым решением для унаследованных систем на базе .NET Framework[23][24].

Сравнение ключевых характеристик EF6 и EF Core
Характеристика Entity Framework 6 (EF6) Entity Framework Core (EF Core)
Платформа .NET Framework (преимущественно Windows)[25] .NET (кросс-платформенный: Windows, Linux, macOS)[25]
Архитектура Монолитная, тесно интегрирована с .NET Framework Модульная, расширяемая, зависимости поставляются как NuGet-пакеты[25]
Производительность Стабильная, но в ряде сценариев уступает EF Core Значительно выше за счёт оптимизаций[25][26]
Подходы к разработке Поддерживает Database First, Model First (через .edmx-файлы) и Code First[27] Ориентирован на Code First; поддержка .edmx отсутствует[28]
Конфигурация XML-файлы (`App.config`, `Web.config`), EDMX-дизайнер[29] В коде (Fluent API), файлы `appsettings.json`[30]
Локализация сообщений Зависит от языковых пакетов .NET Framework[16] В основном на английском; локализация выполняется средствами приложения (например, `IStringLocalizer`)[31]

Платформа и архитектура. Ключевое архитектурное отличие — кросс-платформенность EF Core, который работает на .NET и поддерживает Windows, macOS и Linux[32]. В отличие от него, EF6 исторически был привязан к .NET Framework и Windows, хотя начиная с версии 6.3 получил поддержку .NET Core[17]. EF Core имеет модульную архитектуру: провайдеры баз данных и другие компоненты поставляются как отдельные NuGet-пакеты, что уменьшает размер приложения и упрощает поддержку[25]. Архитектура EF6, напротив, более монолитна и тесно интегрирована в .NET Framework[23].

Подходы к разработке и конфигурация. EF6 поддерживает несколько подходов к разработке, включая визуальный дизайнер моделей на основе XML-файлов формата `.edmx`, содержащих CSDL, SSDL и MSL-секции[33]. EF Core полностью отказался от этого подхода в пользу «Code First», где модель данных и её конфигурация определяются исключительно в коде C# с помощью Fluent API[28]. Соответственно, изменились и способы конфигурации: вместо XML-файлов `App.config`/`Web.config` в EF Core преимущественно используются файлы `appsettings.json` и стандартные механизмы конфигурации .NET[30].

Производительность и функциональность. Производительность была одним из главных приоритетов при разработке EF Core. Благодаря оптимизированному выполнению запросов, улучшенному кэшированию и пакетной обработке команд, EF Core в большинстве сценариев работает значительно быстрее, чем EF6[26][27]. Кроме того, EF Core активно развивается и включает уникальные возможности, отсутствующие в EF6, такие как теневые свойства (Shadow Properties), глобальные фильтры запросов (Global Query Filters) и механизм переиспользования контекстов баз данных (DbContext Pooling)[24].

Архитектура

Архитектура классического ADO.NET Entity Framework (EF6 и более ранних версий) представляет собой многокомпонентную систему, которая функционирует как мост между объектно-ориентированным кодом приложения и реляционной базой данных. Вместо единого «движка» фреймворк состоит из нескольких ключевых частей: модели данных сущностей (Entity Data Model, EDM), которая определяет концептуальную модель, модель хранения и их сопоставление; служб объектов (Object Services), отвечающих за преобразование данных в объекты (материализацию) и отслеживание их изменений; EntityClient, который преобразует запросы (например, LINQ) в деревья команд; и провайдеров данных ADO.NET, которые транслируют эти команды в SQL и выполняют их в конкретной СУБД[34][35].

undefined

Стек архитектуры, представленный на схеме, включает следующие уровни (снизу вверх):

  • Провайдеры БД, реализующие абстракции ADO.NET для работы с концептуальной схемой.
  • Провайдер сопоставления (map provider), переводящий деревья команд Entity SQL в язык SQL конкретной СУБД; включает store-specific bridge для кастомизации конкретного движка.
  • Парсер EDM и отображение представлений: разбирает спецификацию модели и сопоставляет её с реляционной схемой, формируя проекции данных.
  • Pipeline выполнения запросов и обновлений — обрабатывает запросы и преобразует их в стандартные команды, далее — в запросы конкретной СУБД.
  • Метаданные — обслуживает информацию о сущностях, связях и сопоставлениях.
  • Транзакции — обеспечивает работу с транзакциями на уровне хранилища; при отсутствии поддержки реализуется на этом уровне.
  • API концептуального уровня — реализует программную модель доступа к данным через Connection, Command и возвращаемые EntityResultSets/EntitySets.
  • Отключённые компоненты — локальное кэширование данных для офлайн режима.
  • Встроенная БД для клиентского кэширования и запросов к реляционным данным.
  • Инструменты проектирования (Mapping Designer) — облегчает создание сопоставлений между схемами.
  • Программный уровень:
    • Object Services — автогенерирует код CLR-классов с соответствующими свойствами для работы с сущностями как с .NET-объектами.
    • Веб-сервисы — публикация сущностей через веб-протоколы.
  • Высокоуровневые сервисы, например — построение отчётов на уровне сущностей.

Entity Data Model

Entity Data Model (EDM) определяет концептуальную модель (CSDL) данных, основанную на расширенном варианте ER-диаграмм и стандартизованную в схеме XML (SDL). В модели выделяются «Сущности» и ассоциации; сопоставление элементов концептуальной схемы (CSDL) и схемы хранения (SSDL) также выражается на XML[36].

undefined

В Visual Studio имеется Entity Designer, поддерживающий графическое проектирование EDM и сопоставлений между слоями (модель Model First; альтернативы — Code First и Database First). Выходной файл (*.edmx) хранит всё описание и может быть создан или отредактирован вручную. Подход Model First не поддерживается в EF Core[37].

Сопоставление (mapping)

Мастер EDM в Visual Studio обычно строит однозначное сопоставление между реляционной и концептуальной схемой. В реляционной схеме элементы представлены таблицами с первичными и внешними ключами; в концептуальной — сущностями с полями и типами, которые могут агрегировать данные из разных таблиц. Связи между сущностями могут быть другими по сравнению со связями на физическом уровне: обращение к такой связи может возвращать не значение столбца, а коллекцию связанных объектов.

Entity Types определяют класс объектов (CustomerEntity, OrderEntity и т. д.); экземпляры этих классов — сущности. Entity Framework позволяет работать с такими объектами, а внутренне реализует все необходимые объединения таблиц и обновления данных. Для запросов используется язык eSQL (расширение SQL, учитывающее особенности концептуальной модели)[38].

Схема EDM и соответствие задаются на XML; при изменении сущности определяется, какие таблицы должны быть обновлены, и формируются нужные SQL-запросы.

Сущности

Сущностью (entity) в EDM называется экземпляр EntityType — то есть отдельный объект (например, конкретный «заказ» или «клиент»). EntityType задаёт принадлежность объекта к классу и набор его свойств (property). Свойства полностью типизированы и совместимы с системой типов DBMS и CLR. Property может быть SimpleType, ComplexType или многозначным. Все сущности хранятся в EntityContainer-объектах (один проект может содержать несколько контейнеров, включающих множество EntitySet для каждого типа).

Примитивные типы EDM (SimpleType):

Тип EDM Соответствие типу CLR
Edm.Binary Byte[]
Edm.Boolean Boolean
Edm.Byte Byte
Edm.DateTime DateTime
Edm.DateTimeOffset DateTimeOffset
Edm.Decimal Decimal
Edm.Double Double
Edm.Guid Guid
Edm.Int16 Int16
Edm.Int32 Int32
Edm.Int64 Int64
Edm.SByte SByte
Edm.Single Single
Edm.String String
Edm.Time TimeSpan

Связи

Любые два типа сущностей могут быть связаны ассоциацией или включением (containment). Например, «отгрузка выставляется клиенту» — ассоциация; «заказ содержит детали» — включение. Тип отношения (Relationship Type) определяет его структуру, степень (arity), кратность (один-к-одному, один-ко-многим, многие-ко-многим) и поведение при операциях (например, Cascade при удалении). Названия ролей (Role) определяют смысл связи.

В будущих версиях допускается появление новых видов связей (например, композиций).

Язык определения схемы

Для задания EDM используется XML-подобный язык SDL (Schema Definition Language), определяющий как примитивные, так и сложные типы, коллекции и пр. Пример (отрывок на XML):

<ComplexType Name="Addr">
    <Property Name="Street" Type="String" Nullable="false" />
    <Property Name="City" Type="String" Nullable="false" />
    <Property Name="Country" Type="String" Nullable="false" />
    <Property Name="PostalCode" Type="Int32" />
</ComplexType>
<EntityType Name="Customer">
    <Key>
        <PropertyRef Name="Email" />
    </Key>
    <Property Name="Name" Type="String" />
    <Property Name="Email" Type="String" Nullable="false" />
    <Property Name="Address" Type="Addr" />
</EntityType>

Пример отношения (ассоциации один-ко-многим):

<Association Name="CustomerAndOrders">
    <End Type="Customer" Multiplicity="1" />
    <End Type="Orders" Multiplicity="*">
        <OnDelete Action="Cascade" />
    </End>
</Association>

Запросы к данным

Entity SQL

ADO.NET Entity Framework использует диалект SQL под названием Entity SQL, ориентированный на декларативные запросы и обновления на уровне сущностей и связей (без явных JOIN). Для работы с концептуальной моделью применяется провайдер EntityClient, принимающий запрос на Entity SQL и преобразующий его в дерево команд, далее адаптируемое к SQL-подмножества конкретной БД.

Entity SQL поддерживает:

  • Полные типы (type-safety)
  • EntitySets как коллекции сущностей
  • Компонуемость (возможность встраивания подзапросов на любом уровне)

Канонические функции Entity SQL

Все провайдеры EF поддерживают так называемые канонические функции, их можно применять напрямую в запросах Entity SQL (или автоматически — через LINQ to Entities). Перечень зависит от поддержки СУБД и может отличаться по точности и составу.

Группа Канонические функции
Агрегатные функции Avg, BigCount, Count, Max, Min, StDev, StDevP, Sum, Var, VarP
Математические функции Abs, Ceiling, Floor, Power, Round, Truncate
Строковые функции Concat, Contains, EndsWith, IndexOf, Left, Length, LTrim, Replace, Reverse, Right, RTrim, Substring, StartsWith, ToLower, ToUpper, Trim
Дата и время AddMicroseconds, AddMilliseconds, AddSeconds, AddMinutes, AddHours, AddNanoseconds, AddDays, AddYears, CreateDateTime, AddMonths, CreateDateTimeOffset, CreateTime, CurrentDateTime, CurrentDateTimeOffset, CurrentUtcDateTime, Day, DayOfYear, DiffNanoseconds, DiffMilliseconds, DiffMicroseconds, DiffSeconds, DiffMinutes, DiffHours, DiffDays, DiffMonths, DiffYears, GetTotalOffsetMinutes, Hour, Millisecond, Minute, Month, Second, TruncateTime, Year
Побитовые функции BitWiseAnd, BitWiseNot, BitWiseOr, BitWiseXor
Прочие NewGuid

LINQ to Entities

Провайдер LINQ to Entities позволяет писать запросы к различным СУБД с использованием LINQ. Реализовано множество специфических провайдеров для разных серверов баз данных.

Натуральный SQL

Начиная с Entity Framework v4, в ObjectContext появились методы ExecuteStoreQuery() и ExecuteStoreCommand() для выполнения произвольных SQL-запросов и команд.

Визуализаторы

Среда Visual Studio поддерживает визуализацию запросов LINQ: при отладке можно увидеть исходный запрос в виде SQL. Для LINQ to Entities существует отдельный визуализатор, доступный в Visual Studio Marketplace[39].

Профилирование производительности

Существует множество коммерческих профилировщиков для анализа производительности приложений на Entity Framework (EF и EF Core).

Инструменты и расширения

Entity Framework Core

Для Entity Framework Core доступен ряд расширений и инструментов, повышающих эффективность работы с фреймворком[40].

Entity Framework 6

Для классического Entity Framework 6 также имеется большой выбор инструментов и дополнений[41].

Примечания

  1. Krill, Paul. Microsoft open-sources Entity Framework (англ.) (20 July 2012). Архивировано 15 октября 2012 года. Дата обращения: 24 июля 2012.
  2. 1 2 3 Entity Framework Support Policies. Microsoft Learn. Дата обращения: 3 ноября 2025.
  3. 1 2 Releases · dotnet/ef6. GitHub. Дата обращения: 3 ноября 2025.
  4. 1 2 What's New in EF Core 9. Microsoft Learn. Дата обращения: 3 ноября 2025.
  5. 1 2 3 4 What's New in Entity Framework Core. Microsoft Learn. Дата обращения: 3 ноября 2025.
  6. The Object-Relational Impedance Mismatch (англ.). AgileData.org. Дата обращения: 12 декабря 2022. Архивировано 2 февраля 2003 года.
  7. mcleblanc Entity Framework Overview - ADO.NET (амер. англ.). learn.microsoft.com (15 сентября 2021). Дата обращения: 12 декабря 2022. Архивировано 24 августа 2025 года.
  8. 1 2 Общие сведения об Entity Framework - ADO.NET. Microsoft Learn. Дата обращения: 3 ноября 2025.
  9. 1 2 Frontend и Backend разработка: в чем разница? iampm.club. Дата обращения: 3 ноября 2025.
  10. Как мы в Сбере разрабатываем консольные приложения на .NET. Habr (20 февраля 2023). Дата обращения: 3 ноября 2025.
  11. 1 2 3 Политики поддержки Entity Framework. Microsoft Learn. Дата обращения: 3 ноября 2025.
  12. Что такое Entity Framework Core. Microsoft Learn. Дата обращения: 3 ноября 2025.
  13. Новые возможности EF Core 9. Microsoft Learn. Дата обращения: 3 ноября 2025.
  14. Политика поддержки .NET и .NET Core. Microsoft. Дата обращения: 3 ноября 2025.
  15. План для Entity Framework Core 6.0. Microsoft Learn. Дата обращения: 3 ноября 2025.
  16. 1 2 Past Releases of Entity Framework. Microsoft Learn. Дата обращения: 3 ноября 2025.
  17. 1 2 Новые возможности в EF6. Microsoft Learn. Дата обращения: 3 ноября 2025.
  18. Hanselman, Scott ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0 - Scott Hanselman. www.hanselman.com. Дата обращения: 11 июля 2016. Архивировано 20 января 2016 года.
  19. Announcing .NET Core 2.0. .NET Blog (14 августа 2017). Архивировано 14 августа 2017 года.
  20. Announcing .NET Core 3.0. .NET Blog (23 сентября 2019). Архивировано 22 июня 2025 года.
  21. Roth, Daniel Announcing ASP.NET Core in .NET 7 (амер. англ.). .NET Blog (8 ноября 2022). Дата обращения: 12 декабря 2022. Архивировано 17 июня 2025 года.
  22. Arthur, Vickers Entity Framework Core 8 (EF8) is available today (амер. англ.). .NET Blog (14 ноября 2023). Дата обращения: 14 ноября 2023. Архивировано 15 июня 2025 года.
  23. 1 2 What Is Entity Framework Core And How Is It Different From EF6? C-sharpcorner.com. Дата обращения: 3 ноября 2025.
  24. 1 2 EF Core & EF6. Microsoft Learn. Дата обращения: 3 ноября 2025.
  25. 1 2 3 4 5 Understand the Key Difference between Entity Framework Core and Entity Framework. DEV Community. Дата обращения: 3 ноября 2025.
  26. 1 2 Entity Framework Performance. treefish.uk. Дата обращения: 3 ноября 2025.
  27. 1 2 EF Core vs EF 6: Which Entity Framework Should You Choose for Your Project? MoldStud. Дата обращения: 3 ноября 2025.
  28. 1 2 EF Core: почему отказ от EDMX — это хорошо. Habr (19 мая 2020). Дата обращения: 3 ноября 2025.
  29. Файл конфигурации — EF6. Microsoft Learn. Дата обращения: 3 ноября 2025.
  30. 1 2 Connection Strings - EF Core. Microsoft Learn. Дата обращения: 3 ноября 2025.
  31. Глобализация и локализация в ASP.NET Core. Microsoft Learn. Дата обращения: 3 ноября 2025.
  32. Руководство по Entity Framework Core. Metanit. Дата обращения: 3 ноября 2025.
  33. Entity Data Model (EDMX) Files. Actian. Дата обращения: 3 ноября 2025.
  34. Entity Framework - Архитектура. CoderLessons.com. Дата обращения: 3 ноября 2025.
  35. Архитектура ADO.NET Entity Framework. Professorweb.ru. Дата обращения: 3 ноября 2025.
  36. Entity Data Model. MSDN, Microsoft (2 августа 2012). Дата обращения: 15 августа 2013. Архивировано 6 августа 2012 года.
  37. ajcvickers Porting from EF6 to EF Core - Porting an EDMX-Based Model - EF (амер. англ.). learn.microsoft.com (9 марта 2022). Дата обращения: 7 июня 2024. Архивировано 16 июля 2024 года.
  38. Kogent Solutions Inc. ASP.NET 3.5 Black Book. — Dreamtech Press, 2009. — ISBN 978-81-7722-831-1.
  39. Linq to Entity query visualizer - Visual Studio Marketplace (амер. англ.). marketplace.visualstudio.com. Дата обращения: 12 декабря 2022. Архивировано 24 марта 2025 года.
  40. ErikEJ Tools & Extensions - EF Core (амер. англ.). learn.microsoft.com. Дата обращения: 12 декабря 2022. Архивировано 9 октября 2025 года.
  41. ajcvickers Tools & Extensions - EF6 (амер. англ.). learn.microsoft.com (9 марта 2022). Дата обращения: 12 декабря 2022. Архивировано 12 декабря 2022 года.

Литература