Поделиться через


Последние выпуски 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.
  • Доступен текучий 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. Сначала код создаст соответствующий индекс в базе данных.
  • 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,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 см. в разделе об обновлении вручную.

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

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

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

  • Пользовательские соглашения о первом коде позволяют создавать собственные соглашения, чтобы избежать повторяющейся конфигурации. Мы предоставляем простой 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. Эти компоненты используются в коде 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 (SP1) и Visual Studio 2008 с пакетом обновления 1 (SP1) в августе 2008 года. Этот выпуск предоставил базовую поддержку O/RM с помощью первого рабочего процесса базы данных.