Учебники

Entity Framework — Миграция

В Entity Framework 5 и предыдущих версиях Entity Framework код был разделен между основными библиотеками (прежде всего System.Data.Entity.dll), поставляемыми как часть .NET Framework, и были распространены дополнительные библиотеки (главным образом EntityFramework.dll) и поставляется с использованием NuGet, как показано на следующей диаграмме.

DotNet Framework

В Entity Framework 6 основные API, которые ранее были частью .NET Framework, также поставляются и распространяются как часть пакета NuGet.

Основные API

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

Процесс миграции прост, если ваше приложение использует DbContext, который был отправлен в EF 4.1 и более поздних версиях. Но если ваше приложение — ObjectContext, тогда требуется немного больше работы.

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

Шаг 1. Первый шаг — нацеливание на .NET Framework 4.5.2 и более поздние версии. Щелкните правой кнопкой мыши свой проект и выберите свойства.

Обновление EF6

Шаг 2. Снова щелкните правой кнопкой мыши свой проект и выберите «Управление пакетами NuGet» …

Управление пакетами NuGet

Шаг 3 — На вкладке Онлайн выберите EntityFramework и нажмите Установить. Убедитесь, что ссылки на сборку System.Data.Entity.dll удалены.

При установке пакета EF6 NuGet он должен автоматически удалить любые ссылки на System.Data.Entity из вашего проекта.

Шаг 4 — Если у вас есть какая-либо модель, созданная с помощью EF Designer, вам также потребуется обновить шаблоны генерации кода для генерации кода, совместимого с EF6.

Шаг 5. В обозревателе решений в файле edmx удалите существующие шаблоны генерации кода, которые обычно называются <edmx_file_name> .tt и <edmx_file_name> .Context.tt.

EDMX

Шаг 6 — Откройте вашу модель в EF Designer, щелкните правой кнопкой мыши на области дизайна и выберите Добавить элемент генерации кода …

Шаг 7 — Добавьте соответствующий шаблон генерации кода EF 6.x.

Шаблон генерации кода

Он также автоматически сгенерирует EF6-совместимый код.

Если ваши приложения используют EF 4.1 или более позднюю версию, вам не нужно ничего менять в коде, поскольку пространства имен для типов DbContext и Code First не изменились.

Но если ваше приложение использует более старую версию Entity Framework, то такие типы, как ObjectContext, которые ранее были в System.Data.Entity.dll, были перемещены в новые пространства имен.

Шаг 8 — Вам необходимо обновить свои директивы using или Import, чтобы компилировать их в EF6.

Общее правило для изменений пространства имен заключается в том, что любой тип в System.Data. * Перемещается в System.Data.Entity.Core. *. Ниже приведены некоторые из них —

  • System.Data.EntityException ⇒ System.Data .Entity.Core. EntityException
  • System.Data.Objects.ObjectContext ⇒ System.Data .Entity.Core. Objects.ObjectContext;
  • System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data .Entity.Core. Objects.DataClasses.RelationshipManager;

Некоторые типы находятся в пространствах имен Core, поскольку они не используются напрямую для большинства приложений на основе DbContext.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

Ваш существующий проект Entity Framework будет работать в Entity Framework 6.0 без каких-либо серьезных изменений.