Последние выпуски Entity Framework

Первая версия Entity Framework была выпущена в 2008 году в составе платформы .NET Framework 3.5 с пакетом обновления 1 (SP1) и Visual Studio 2008 с пакетом обновления 1 (SP1).

Начиная с выпуска EF4.1 он поставляется в качестве пакета NuGet EntityFramework — в настоящее время один из самых популярных пакетов на NuGet.org.

Между версиями 4.1 и 5.0 пакет EntityFramework NuGet расширил библиотеки EF, включенные в состав платформы .NET Framework.

Начиная с версии 6 EF стал проектом с открытым исходным кодом, а также полностью перестал быть частью платформы .NET Framework. Это означает, что при добавлении пакета EntityFramework версии 6 NuGet в приложение вы получаете полную копию библиотеки EF, которая не зависит от битов EF, которые отправляются в рамках платформа .NET Framework. Это помогло несколько ускорить темпы разработки и доставки новых функций.

В июне 2016 года мы выпустили EF Core 1.0. EF Core основана на новой базе кода и разработана как более упрощенная и расширяемая версия EF. В настоящее время EF Core является основной задачей разработки группы Entity Framework в Корпорации Майкрософт. Это означает, что для EF6 нет новых основных функций. Однако EF6 по-прежнему поддерживается как проект открытый код и поддерживаемый продукт Майкрософт.

Ниже приведен список прошлых выпусков в обратном хронологическом порядке с информацией о новых функциях, которые были представлены в каждом выпуске.

Обновления инструментов для Entity Framework в Visual Studio 2017 версии 15.7

В мае 2018 г. мы выпустили обновленную версию EF Tools в составе Visual Studio 2017 версии 15.7. Она содержит ряд улучшений по частым проблемным вопросам.

  • Исправлено несколько ошибок доступности в пользовательском интерфейсе.
  • Обходное решение для регрессии производительности SQL Server при генерации моделей из существующих баз данных #4.
  • Улучшена поддержка обновления моделей для работы с моделями большего размера на SQL Server #185.

Другим улучшением новой версии EF Tools является автоматическая установка среды выполнения EF 6.2 при создании модели в новом проекте. В предыдущих версиях Visual Studio среду выполнения EF 6.2 (а также любую более раннюю версию EF) можно использовать, установив соответствующую версию пакета NuGet.

EF 6.2.0

Среда выполнения EF 6.2 была выпущена на NuGet в октябре 2017 г. Благодаря значительным усилиям нашего сообщества участников, вносящих вклад в разработку ресурсов с открытым исходным кодом, EF 6.2 содержит многочисленные исправления ошибок и усовершенствования продуктов.

Далее приведен краткий перечень наиболее важных изменений, затрагивающих среду выполнения EF 6.2.

  • Сокращено время запуска за счет загрузки готовых моделей Code First из постоянного кэша #275.
  • Доступен Fluent API для определения индексов #274.
  • DbFunctions.Like() для написания запросов LINQ, которые преобразуются в выражения LIKE в SQL #241.
  • Migrate.exe теперь поддерживает параметр -script #240.
  • EF6 теперь может работать со значениями ключей, созданными с помощью последовательности в SQL Server #165.
  • Обновленный список временных ошибок для стратегии выполнения SQL Azure #83.
  • Ошибка. Повторное выполнение запросов или команд SQL завершается ошибкой The SqlParameter is already contained by another SqlParameterCollection ("Параметр SqlParameter уже содержится в другом объекте SqlParameterCollection") #81.
  • Ошибка. Часто истекает время ожидания оценки DbQuery.ToString() в отладчике #73.

EF 6.1.3

Среда выполнения EF 6.1.3 была выпущена в NuGet в октябре 2015 года. Этот выпуск содержит исправления только для дефектов с высоким приоритетом и регрессий, сообщаемых в выпуске 6.1.2. К исправлениям относятся следующие:

  • Запрос: регрессия в EF 6.1.2: ВНЕШНИЕ ПРИМЕНЕНИЯ появились и более сложные запросы для связей 1:1 и предложения let
  • Проблема TPT с скрытием свойства базового класса в наследуемом классе
  • DbMigration.Sql завершается неудачей, если в тексте присутствует слово "go".
  • Создание флага совместимости для поддержки сплощенности UnionAll и Intersect
  • Запрос с несколькими включениями не работает в версии 6.1.2 (работает в версии 6.1.1)
  • Исключение "Ошибка в синтаксисе SQL" после обновления с EF 6.1.1 до 6.1.2

EF 6.1.2

Среда исполнения EF 6.1.2 была выпущена на платформе NuGet в декабре 2014 года. Эта версия в основном относится к исправлению ошибок. Мы также приняли несколько заметных изменений от членов сообщества:

  • Параметры кэша запросов можно настроить из файла app/web.configuration
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • Методы SqlFile и SqlResource в DbMigration позволяют запускать скрипт SQL, хранящийся в виде файла или внедренного ресурса.

EF 6.1.1

Среда выполнения EF 6.1.1 была опубликована на NuGet в июне 2014 года. Эта версия содержит исправления проблем, с которыми столкнулось несколько пользователей. Среди прочего:

  • Конструктор: ошибка открытия edmx EF5 с десятичной точностью в конструкторе EF6
  • Логика обнаружения экземпляров по умолчанию для LocalDB не работает с SQL Server 2014

EF 6.1.0

Среда выполнения EF 6.1.0 была выпущена на платформе NuGet в марте 2014 года. Это дополнительное обновление включает значительное количество новых функций:

  • Консолидация инструментов обеспечивает согласованный способ создания новой модели EF. Эта функция расширяет мастер ADO.NET модели данных сущностей для поддержки создания моделей Code First, в том числе для обратной инженерии из существующей базы данных. Эти функции ранее были доступны в бета-версии в EF Power Tools.
  • Обработка сбоев фиксации транзакций предоставляет CommitFailureHandler, который использует недавно введённую возможность перехвата операций транзакций. CommitFailureHandler позволяет автоматически восстанавливаться от сбоев соединения во время фиксации транзакции.
  • IndexAttribute позволяет задавать индексы путем размещения атрибута [Index] в свойстве (или свойствах) в модели Code First. "Code First" затем создаст соответствующий индекс в базе данных.
  • API общедоступного сопоставления предоставляет доступ к информации EF о том, как свойства и типы сопоставляются со столбцами и таблицами в базе данных. В прошлых выпусках этот API был внутренним.
  • Возможность настройки перехватчиков с помощью файла App/Web.config позволяет добавлять перехватчики без повторной компиляции приложения.
  • System.Data.Entity.Infrastructure.Interception.DatabaseLogger— это новый перехватчик, который упрощает ведение журнала всех операций базы данных в файл. В сочетании с предыдущей функцией это позволяет легко переключаться на ведение журнала операций базы данных для развернутого приложения без необходимости повторной компиляции.
  • Улучшено обнаружение изменений модели миграции, что позволяет повысить точность шаблонов миграции. Кроме того, улучшена производительность процесса обнаружения изменений.
  • Улучшения производительности, включая сокращение операций базы данных во время инициализации, оптимизацию сравнения равенства null в запросах LINQ, более быстрое создание представлений (создание модели) в дополнительных сценариях и более эффективную материализацию отслеживаемых сущностей с несколькими ассоциациями.

EF 6.0.2

Среда выполнения версии EF 6.0.2 была выпущена в NuGet в декабре 2013 года. Этот выпуск исправлений ограничен устранением проблем, которые были представлены в выпуске EF6 (регрессии в производительности или поведении с EF5).

EF 6.0.1

Среда выполнения EF 6.0.1 была выпущена в NuGet в октябре 2013 года одновременно с EF 6.0.0, так как последняя была внедрена в версию Visual Studio, которая была завершена за несколько месяцев до этого. Этот выпуск исправлений ограничен устранением проблем, которые были представлены в выпуске EF6 (регрессии в производительности или поведении с EF5). Наиболее заметные изменения были направлены на исправление некоторых проблем с производительностью во время прогрева моделей EF. Это было важно, так как производительность прогрева была в центре внимания в EF6, и эти проблемы сводили на нет некоторые из других улучшений производительности, достигнутых в EF6.

EF 6.0

Среда выполнения EF 6.0.0 была выпущена на NuGet в октябре 2013 года. Это первая версия, в которой полная среда выполнения EF включена в пакет NuGet EntityFramework, который не зависит от битов EF, входящих в платформа .NET Framework. Перемещение оставшихся частей среды выполнения в пакет NuGet требует ряда критических изменений для существующего кода. Дополнительные сведения об обновлении до Entity Framework 6 см. в разделе об обновлении вручную.

Этот выпуск включает в себя множество новых функций. Следующие возможности работают для моделей, созданных с помощью Code First или EF Designer:

  • Асинхронный запрос и сохранение добавляет поддержку асинхронных шаблонов на основе задач, представленных в .NET 4.5.
  • Устойчивость подключения обеспечивает автоматическое восстановление из временных сбоев подключения.
  • Конфигурация на основе кода предоставляет возможность выполнения конфигурации , которая традиционно выполнялась в файле конфигурации в коде.
  • Разрешение зависимостей предоставляет поддержку паттерна Service Locator, и мы разбили некоторые части функциональности, которые можно заменить пользовательскими реализациями.
  • Перехват/ведение журнала SQL предоставляет низкоуровневые стандартные блоки для перехвата операций EF с простым ведением журнала SQL, построенным поверх.
  • Улучшения возможности тестирования упрощают создание двойных тестов для DbContext и DbSet при использовании макетной платформы или написания собственных двойных тестов.
  • DbContext теперь можно создать с уже открытым DbConnection, что позволяет использовать сценарии, в которых полезно иметь открытое соединение при создании контекста (например, при совместном использовании соединения между компонентами, где невозможно гарантировать состояние соединения).
  • Улучшенная поддержка транзакций обеспечивает поддержку транзакции, внешней для платформы, а также улучшенные способы создания транзакции в Платформе.
  • Перечисления, пространственные данные и улучшенная производительность в .NET 4.0. Переместив основные компоненты, которые использовались в платформе .NET Framework в пакет EF NuGet, теперь мы можем предложить поддержку перечислений, пространственных типов данных и улучшения производительности из EF5 в .NET 4.0.
  • Улучшена производительность метода Enumerable.Contains в запросах LINQ.
  • Улучшено время прогрева (создание представления), особенно для больших моделей.
  • Подключаемая служба множественного и единственного числа.
  • Теперь поддерживаются пользовательские реализации Equals или GetHashCode в классах сущностей.
  • DbSet.AddRange/RemoveRange предоставляет оптимизированный способ добавления или удаления нескольких сущностей из набора.
  • DbChangeTracker.HasChanges предоставляет простой и эффективный способ узнать, есть ли какие-либо ожидающие изменения, которые будут сохранены в базе данных.
  • SqlCeFunctions предоставляет эквивалент SQL Compact для SqlFunctions.

Следующие функции применяются только к Code First.

  • Пользовательские соглашения о первом коде позволяют создавать собственные соглашения, чтобы избежать повторяющейся конфигурации. Мы предоставляем простой API для упрощенных соглашений, а также некоторые более сложные стандартные блоки, позволяющие создавать более сложные соглашения.
  • Теперь поддерживается первое сопоставление кода для вставки и обновления и удаления хранимых процедур .
  • Идемпотентные скрипты миграции позволяют создавать SQL-скрипт, который может обновлять базу данных до любой версии, вплоть до последней.
  • Настраиваемая таблица журнала миграций позволяет настроить определение таблицы журнала миграций. Это особенно полезно для поставщиков баз данных, которым необходимо указать соответствующие типы данных и т. д., чтобы таблица журнала миграций работала правильно.
  • Несколько контекстов на одну базу данных устраняет прежнее ограничение одной модели Code First на базу данных при использовании миграций или автоматическом создании базы данных Code First.
  • DbModelBuilder.HasDefaultSchema — это новый API code First, который позволяет настроить схему базы данных по умолчанию для модели Code First. Ранее схема Code First по умолчанию жестко закодирована как "dbo", и единственный способ настроить схему, к которой принадлежит таблица, был посредством API ToTable.
  • Метод DbModelBuilder.Configurations.AddFromAssembly позволяет легко добавлять все классы конфигурации, определенные в сборке при использовании классов конфигурации с API Code First Fluent.
  • Пользовательские операции миграций позволяют вам добавлять дополнительные операции для использования в миграциях на основе вашего кода.
  • Уровень изоляции транзакций по умолчанию изменяется на READ_COMMITTED_SNAPSHOT для баз данных, созданных с помощью code First, что позволяет повысить масштабируемость и уменьшить количество взаимоблокировок.
  • Теперь сущности и сложные типы могут быть вложены внутрь классов.

EF 5.0

Среда выполнения EF версии 5.0.0 была выпущена на платформе NuGet в августе 2012 года. В этом выпуске представлены некоторые новые функции, включая поддержку перечисления, табличные функции, пространственные типы данных и различные улучшения производительности.

Конструктор Entity Framework в Visual Studio 2012 также предоставляет поддержку нескольких диаграмм на модель, раскраски фигур на поверхности проектирования и пакетного импорта хранимых процедур.

Ниже приведен список содержимого, который мы собрали специально для выпуска EF 5:

EF 4.3.1

Среда выполнения EF 4.3.1 была выпущена в NuGet в феврале 2012 г., вскоре после выхода версии EF 4.3.0. В этом выпуске исправлений включены некоторые исправления ошибок в выпуске EF 4.3 и улучшена поддержка LocalDB для клиентов, использующих EF 4.3 с Visual Studio 2012.

Ниже приведен список содержимого, который мы собрали специально для выпуска EF 4.3.1, большинство содержимого, предоставленного для EF 4.1, по-прежнему относится к EF 4.3, а также:

EF 4.3

Среда выполнения EF 4.3.0 была выпущена на NuGet в феврале 2012 года. В этом выпуске включена новая функция "Миграция кода", которая позволяет базе данных, созданной code First, изменяться постепенно по мере развития модели Code First.

Вот список содержимого, который мы собрали специально для выпуска EF 4.3, большая часть содержимого, предоставленного для EF 4.1, по-прежнему относится к EF 4.3, а также:

EF 4.2

Среда выполнения EF 4.2.0 была выпущена на NuGet в ноябре 2011 года. Этот выпуск содержит исправления ошибок в выпуске EF 4.1.1. Так как этот выпуск включал только исправления ошибок, он мог быть выпуском исправлений EF 4.1.2, но мы решили перейти к версии 4.2, чтобы позволить нам перейти от номеров версий исправлений на основе даты, которые мы использовали в выпусках 4.1.x и принять стандарт семантического управления версиями для семантического управления версиями.

Вот список содержимого, который мы собрали специально для выпуска EF 4.2, содержимое, предоставленное для EF 4.1, по-прежнему применяется к EF 4.2, а также:

EF 4.1.1

Среда выполнения версии EF 4.1.10715 была выпущена на платформе NuGet в июле 2011 года. Кроме исправлений ошибок в этом выпуске патчей появились некоторые компоненты, которые упрощают взаимодействие инструментов проектирования с моделью Code First. Эти компоненты используются системой Code First Migrations (включены в EF 4.3) и инструментами EF Power Tools.

Вы заметите странный номер версии пакета: 4.1.10715. Мы использовали версии исправлений на основе дат, прежде чем мы решили применить семантические версии версий. Подумайте об этой версии как EF 4.1 с исправлением 1 (или EF 4.1.1).

Ниже приведен список содержимого, который мы собрали для выпуска 4.1.1:

EF 4.1

Среда выполнения EF 4.1.10331 стала первой версией, опубликованной в NuGet, в апреле 2011 года. Этот выпуск включал упрощенный API DbContext и рабочий процесс Code First.

Вы заметите странный номер версии 4.1.10331, который действительно должен был быть 4.1. Кроме того, существует версия 4.1.10311, которая должна быть 4.1.0-rc (rc означает "кандидат выпуска". Мы использовали версии исправлений на основе дат, прежде чем мы решили применить семантические версии версий.

Ниже приведен список содержимого, который мы собрали для выпуска 4.1. Большая часть ее по-прежнему применяется к более поздним выпускам Entity Framework:

EF 4.0

Этот выпуск был включен в .NET Framework 4 и Visual Studio 2010 в апреле 2010 года. Важные новые функции в этом выпуске включают поддержку POCO, сопоставление внешних ключей, отложенную загрузку, улучшения тестирования, настраиваемое создание кода и рабочий процесс Model First.

Хотя это был второй выпуск Entity Framework, он был назван EF 4, чтобы соответствовать версии платформы .NET Framework, с которой он поставлялся. После этого выпуска мы начали делать Entity Framework доступным на NuGet и приняли семантическое версионирование, так как мы больше не были привязаны к версии платформы .NET Framework.

Обратите внимание, что некоторые последующие версии платформы .NET Framework поставляются со значительными обновлениями включенных компонентов EF. Фактически, многие новые возможности EF 5.0 были реализованы в качестве улучшений в этих аспектах. Тем не менее, чтобы рационализировать историю управления версиями для EF, мы продолжаем ссылаться на биты EF, которые являются частью платформы .NET Framework в качестве среды выполнения EF 4.0, а все новые версии включают в себя NuGet пакет EntityFramework.

EF 3.5

Начальная версия Entity Framework была включена в .NET 3.5 с пакетом обновления 1 и Visual Studio 2008 SP1, выпущенными в августе 2008 года. Этот релиз обеспечил базовую поддержку O/RM, используя метод "Database First".