Entity Framework - Миграция

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

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

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

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

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

Step 1 - Первый шаг - настроить таргетинг на .NET Framework 4.5.2, а затем щелкнуть правой кнопкой мыши по проекту и выбрать свойства.

Step 2 - Снова щелкните свой проект правой кнопкой мыши и выберите Управление пакетами NuGet ...

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

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

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

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

Step 6 - Откройте свою модель в EF Designer, щелкните правой кнопкой мыши область конструктора и выберите Добавить элемент генерации кода ...

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

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

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

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

Step 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 без каких-либо серьезных изменений.