Обзор Entity Framework 6 — EF6 | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Entity Framework 6 (EF6) — это проверенное средство объектно-реляционного сопоставления (O/RM) для . NET, которое разрабатывалось и совершенствовалось в течение нескольких лет.

В качестве O/RM EF6 уменьшает несогласованность между реляционным и объектно ориентированным мирами, позволяя разработчикам создавать приложения, которые взаимодействуют с данными, хранящимися в реляционных базах данных, с помощью строго типизированных объектов .NET, представляющих прикладную область, и устраняя необходимость писать большой объем инфраструктурного кода для доступа к данным.

В EF6 реализованы многие популярные возможности O/RM:

  • Сопоставление классов сущностей POCO не зависит ни от каких типов EF
  • Автоматическое отслеживание изменений.
  • Разрешение идентификаторов и единицы работы.
  • Безотложная, отложенная и явная загрузка.
  • Преобразование строго типизированных запросов с помощью LINQ (Language INtegrated Query)
  • Широкие возможности сопоставления, включая поддержку следующих элементов:
    • Отношения «один к одному», «один ко многим» и «многие ко многим»
    • Наследование (одна таблица на иерархию, одна таблица на тип и одна таблица на конкретный класс).
    • Сложные типы
    • Хранимые процедуры
  • Визуальный конструктор для создания моделей сущностей.
  • Интерфейс Code First для создания моделей сущностей путем написания кода.
  • Модели можно создавать на основе существующих баз данных и затем редактировать вручную или же создавать с нуля и затем использовать для создания новых баз данных.
  • Интеграция с моделями приложений .NET Framework, включая ASP.NET, и через привязку данных с помощью WPF и WinForms.
  • Возможность подключения к базам данных SQL Server, Oracle, MySQL, SQLite, PostgreSQL, DB2 и т. д. на основе ADO.NET и различных поставщиков.

Что выбрать — EF6 или EF Core?

EF Core — это более современная, упрощенная и расширяемая версия Entity Framework, почти аналогичная EF6 по возможностям и преимуществам. EF Core была создана с нуля и содержит новые возможности, недоступные в EF6, хотя в ней пока отсутствуют некоторые расширенные возможности сопоставления из EF6.

Используйте EF Core в новых приложениях, если набор функций соответствует вашим требованиям. Статья Сравнение EF Core и EF6 подробнее рассматривает этот выбор.

Добавьте в проект пакет NuGet EntityFramework или установите Entity Framework Tools для Visual Studio. А затем смотрите видео, читайте руководства и знакомьтесь с расширенной документацией, чтобы научиться использовать все возможности Entity Framework 6.

Предыдущие версии Entity Framework

Это документация по последней версии Entity Framework 6, но по большей части она применима и к предыдущим выпускам. Прочитайте разделы Новые возможности и Прошлые выпуски, чтобы узнать обо всех выпусках EF и их возможностях.

Entity Framework Core и C#

Последнее обновление: 11.11.2022

Entity Framework представляет ORM-технологию (object-relational mapping — отображения данных на реальные объекты) от компании Microsoft для доступа к данным.

Entity Framework Core позволяет абстрагироваться от самой базы данных и ее таблиц и работать с данными как с объектами классом независимо от типа хранилища. Если на физическом уровне мы оперируем таблицами, индексами, первичными и внешними ключами, но на концептуальном уровне, который нам предлагает Entity Framework, мы уже работаем с объектами.

Как технология доступа к данным Entity Framework Core работает поверх платформы .NET и поэтому может использоваться на различных платформах стека .NET. Это и стандартные платформы типа Windows Forms, консольные приложения, WPF, UWP и ASP.NET Core. При этом кроссплатформенная природа EF Core позволяет задействовать ее не только на ОС Windows, но и на Linux и Mac OS X.

Поскольку Entity Framework Core работает на основе платформы .NET, то он развивается вместе с данной платформой. Текущая версия EF Core — 7.0 была выпущена в ноябре 2022 года вместе с .NET 7. И технология продолжает развиваться.

Entity Framework Core поддерживает множество различных систем баз данных. Таким образом, мы можем через EF Core работать с любой СУБД, если для нее имеется нужный провайдер. По умолчанию на данный момент Microsoft предоставляет ряд встроенных провайдеров: для работы с MS SQL Server, для SQLite, для PostgreSQL. Также имеются провайдеры от сторонних поставщиков, например, для MySQL.

Стоит отметить, что Entity Framework Core развивается как opensourse-проект, все файлы которого можно найти в репозитории на github по адресу https://github.com/dotnet/efcore.

Также стоит отметить, что EF Core предоставляет универсальный API для работы с данными. И если, к примеру, мы решим сменить целевую СУБД, то основные изменения в проекте будут касаться прежде всего конфигурации и настройки подключения к соответствующим провайдерам. А код, который непосредственно работает с данными, получает данные, добавляет их в БД и т.д., останется прежним.

Центральной концепцией Entity Framework является понятие сущности или entity. Сущность определяет набор данных, которые связаны с определенным объектом. Поэтому данная технология предполагает работу не с таблицами, а с объектами и их коллекциями.

Любая сущность, как и любой объект из реального мира, обладает рядом свойств. Например, если сущность описывает человека, то мы можем выделить такие свойства, как имя, фамилия, рост, возраст. Свойства необязательно представляют простые данные типа int или string, но могут также представлять и более комплексные типы данных. И у каждой сущности может быть одно или несколько свойств, которые будут отличать эту сущность от других и будут уникально определять эту сущность. Подобные свойства называют ключами.

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

Отличительной чертой Entity Framework Core, как технологии ORM, является использование запросов LINQ для выборки данных из БД. С помощью LINQ мы можем создавать различные запросы на выборку объектов, в том числе связанных различными ассоциативными связями.

А Entity Framework при выполнение запроса транслирует выражения LINQ в выражения, понятные для конкретной СУБД (как правило, в выражения SQL).

Основная функциональность Entity Framework Core сосредоточена в следующих пакетах:

  • Microsoft.EntityFrameworkCore:основной пакет EF Core

  • Microsoft.EntityFrameworkCore.SqlServer: представляет функциональность провайдера для Microsoft SQL Server и SQL Azure

  • Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite: предоставляет поддержку географических типов (spatial types) для SQL Server

  • Microsoft.EntityFrameworkCore.Sqlite: представляет функциональность провайдера для SQLite и включает нативные бинарные файлы для движка базы данных

  • Microsoft.EntityFrameworkCore.Sqlite.Core: представляет функциональность провайдера для SQLite, но в отличие от предыдущего пакета не содержит нативные бинарные файлы для движка базы данных

  • Microsoft. EntityFrameworkCore.Sqlite.NetTopologySuite: предоставляет поддержку географических типов (spatial types) для SQLite

  • Microsoft.EntityFrameworkCore.Cosmos

    : представляет функциональность провайдера для Azure Cosmos DB

  • Microsoft.EntityFrameworkCore.InMemory: представляет функциональность провайдера базы данных в памяти

  • Microsoft.EntityFrameworkCore.Tools: содержит команды EF Core PowerShell для Visual Studio Package Manager Console; применяется в Visual Studio для миграций и генерации классов по готовой бд

  • Microsoft.EntityFrameworkCore.Design: содержит вспомогательные компоненты EF Core, применяемые в процессе разработки

  • Microsoft.EntityFrameworkCore.Proxies: хранит функциональность для так называемой «ленивой загрузки» (lazy-loading) и прокси остлеживания изменений

  • Microsoft. EntityFrameworkCore.Abstractions: содержит набор абстракций EF Core, которые не зависят от конкретной СУБД

  • Microsoft.EntityFrameworkCore.Relational: хранит компоненты EF Core для провайдеров реляционных СУБД

  • Microsoft.EntityFrameworkCore.Analyzers: содержит функционал анализаторов C# для EF Core

Платформу Entity Framework Core можно применять в различных технологиях стека .NET — консольных приложениях, программах на WinForms, WPF, UWP, веб-приложения ASP.NET и так далее. В данном случае мы будем рассматривать базовые моменты платформы на примере консольных приложений, как наиболее простых и не содержащих никакого лишнего кода.

Кроме того, EF Core может работать с различными системами баз данных. Здесь мы будем рассмотривать общие возможности на примере бд SQLite, как самой простой и удобной СУБД. И поскольку Entity Framework позволяет в большой степени писать универсальный код для подключения к разным СУБД, этот код можно будет применять и к другим СУБД. Однако, в последствии также затронем работу с другими СУБД в тех аспектах, где есть отличия.

СодержаниеВперед

Обзор Entity Framework 6 — EF6

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 2 минуты на чтение

Entity Framework 6 (EF6) — это проверенный объектно-реляционный преобразователь (O/RM) для .NET с многолетней разработкой и стабилизацией функций.

В качестве O/RM EF6 уменьшает несоответствие импеданса между реляционным и объектно-ориентированным мирами, позволяя разработчикам писать приложения, взаимодействующие с данными, хранящимися в реляционных базах данных, с использованием строго типизированных объектов . NET, представляющих предметную область приложения, и исключая потребность в большой части кода доступа к данным, который им обычно приходится писать.

EF6 реализует многие популярные функции O/RM:

  • Сопоставление классов сущностей POCO, которые не зависят ни от каких типов EF
  • Автоматическое отслеживание изменений
  • Разрешение личности и единица работы
  • Нетерпеливая, ленивая и явная загрузка
  • Перевод строго типизированных запросов с использованием LINQ (Language INtegrated Query)
  • Богатые возможности отображения, включая поддержку:
    • Отношения «один к одному», «один ко многим» и «многие ко многим»
    • Наследование (таблица по иерархии, таблица по типу и таблица по конкретному классу)
    • Сложные виды
    • Хранимые процедуры
  • Визуальный конструктор для создания моделей сущностей.
  • Опыт «Code First» для создания моделей сущностей путем написания кода.
  • Модели можно либо создавать из существующих баз данных, а затем редактировать вручную, либо их можно создавать с нуля, а затем использовать для создания новых баз данных.
  • Интеграция с моделями приложений .NET Framework, включая ASP.NET, и посредством привязки данных с WPF и WinForms.
  • Возможность подключения к базе данных на основе ADO.NET и многочисленных поставщиков, доступных для подключения к SQL Server, Oracle, MySQL, SQLite, PostgreSQL, DB2 и т. д.

Должен ли я использовать EF6 или EF Core?

EF Core — это более современная, облегченная и расширяемая версия Entity Framework, которая имеет очень схожие возможности и преимущества с EF6. EF Core полностью переписан и содержит множество новых функций, недоступных в EF6, хотя в нем по-прежнему отсутствуют некоторые из наиболее продвинутых возможностей сопоставления EF6. Рассмотрите возможность использования EF Core в новых приложениях, если набор функций соответствует вашим требованиям. Сравните EF Core и EF6, чтобы изучить этот выбор более подробно.

Добавьте пакет NuGet EntityFramework в свой проект или установите инструменты Entity Framework для Visual Studio. Затем смотрите видеоролики, читайте руководства и расширенную документацию, которые помогут вам максимально эффективно использовать EF6.

Прошлые версии Entity Framework

Это документация для последней версии Entity Framework 6, хотя большая часть ее применима и к предыдущим выпускам. Полный список выпусков EF и представленных в них функций см. в статье Новые и прошлые выпуски.

Обратная связь

Просмотреть все отзывы о странице

Политики поддержки

Entity Framework | Microsoft Узнайте

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 2 минуты на чтение

Entity Framework впервые был выпущен в 2008 году как часть .NET Framework. С тех пор он претерпел несколько изменений:

  • Первая версия Entity Framework и Entity Framework 4 полностью включены в .NET Framework
  • Entity Framework 4.1, 4.2, 4.3 и 5.0 содержат некоторый код в .NET Framework, а некоторый код поставляется в виде пакетов NuGet
  • Entity Framework 6.0, 6.1, 6.2, 6.3 и 6.4 полностью поставляются в виде пакетов NuGet
  • Entity Framework Core (все версии) представляет собой полностью отдельную кодовую базу и поставляется в виде пакетов NuGet
  • .

Политики поддержки для каждого из этих вариантов описаны в этом документе. Во всех случаях политика поддержки применяется к последнему патчу для данных версий.

Entity Framework Core

Новые версии Entity Framework Core поставляются одновременно с новыми версиями .NET. Политика поддержки Entity Framework Core соответствует политике поддержки . NET. См. текущие и запланированные выпуски для получения дополнительной информации.

Entity Framework Core — единственная активно разрабатываемая версия Entity Framework, и мы рекомендуем использовать ее для всего нового кода.

Entity Framework 6.0, 6.1, 6.2, 6.3 и 6.4

Entity Framework 6.x следует современной политике жизненного цикла. Это означает, что поддерживается только последний патч последней выпущенной версии. На данный момент последней версией является 6.4.4. Эту версию всегда можно найти в NuGet. Версии 6.0, 6.1, 6.2 и 6.3 больше не поддерживаются.

Хотя Entity Framework 6.x по-прежнему поддерживается, он больше не разрабатывается и будет получать исправления только для проблем безопасности. Кодовая база Entity Framework 6.x очень стабильна, и приоритетом является сохранение этой стабильности, не внося в код ненужных изменений. Настоятельно рекомендуется, чтобы новые приложения и существующие приложения, находящиеся в активной разработке, использовали Entity Framework Core.

Корпорация Майкрософт направит уведомление как минимум за 12 месяцев до прекращения поддержки Entity Framework 6. В настоящее время планы по прекращению поддержки отсутствуют.

Entity Framework 4.1, 4.2, 4.3 и 5.0

Предупреждение

Entity Framework 4.1, 4.2, 4.3 и 5.0 и все исправления этих версий больше не поддерживаются и не должны использоваться. Пакеты NuGet для Entity Framework 4.1, 4.2, 4.3 и 5.0 больше не поддерживаются. Приложения, использующие эти версии, должны быть обновлены для использования Entity Framework 6 или перенесены для использования Entity Framework Core.

Часть кода для Entity Framework 4.x и 5.0 содержится в .NET Framework. Таким образом, этот код поддерживается до тех пор, пока поддерживается .NET Framework. Однако обратите внимание, что этот код предназначен для использования вместе с пакетами NuGet для этих версий Entity Framework. Код .NET Framework не следует использовать независимо.

Entity Framework 1 и 4

Предупреждение

Entity Framework 1 и 4 считаются устаревшими и не должны использоваться.