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


Обновление до Entity Framework 6

В предыдущих версиях EF код был разделен между основными библиотеками (главным образом System.Data.Entity.dll), отправленными в рамках библиотек платформа .NET Framework и внеполосных библиотек (OOB), отправленных в пакет NuGet. EF6 принимает код из основных библиотек и включает его в библиотеки OOB. Это необходимо для того, чтобы ef было сделано открытый код и для того, чтобы он мог развиваться в другом темпе от платформа .NET Framework. Следствием этого является то, что приложения должны быть перестроены для перемещаемых типов.

Это должно быть просто для приложений, которые используют DbContext, как поставляемые в EF 4.1 и более поздних версий. Для приложений, использующих ObjectContext, требуется немного больше работы, но это еще не трудно сделать.

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

1. Установка пакета NuGet EF6

Необходимо выполнить обновление до новой среды выполнения Entity Framework 6.

  1. Щелкните проект правой кнопкой мыши и выберите пункт "Управление пакетами NuGet...
  2. На вкладке "Интернет" выберите EntityFramework и нажмите кнопку "Установить"

    Примечание.

    Если установлена предыдущая версия пакета NuGet EntityFramework, она обновится до EF6.

Кроме того, можно выполнить следующую команду из консоли диспетчер пакетов:

Install-Package EntityFramework

2. Убедитесь, что ссылки на сборки на System.Data.Entity.dll удалены

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

3. Переключение моделей EF Designer (EDMX) на использование создания кода EF 6.x

Если у вас есть модели, созданные с помощью ef Designer, необходимо обновить шаблоны создания кода для создания совместимого кода EF6.

Примечание.

В настоящее время доступны только шаблоны генератора DBContext EF 6.x для Visual Studio 2012 и 2013.

  1. Удалите существующие шаблоны создания кода. Обычно эти файлы будут называться <edmx_file_name.tt> и <edmx_file_name.Context.tt> и вложены в файл edmx в Обозреватель решений. Вы можете выбрать шаблоны в Обозреватель решений и нажать клавишу Del, чтобы удалить их.

    Примечание.

    В проектах веб-сайта шаблоны не будут вложены в файл edmx, но перечислены вместе с ним в Обозреватель решений.

    Примечание.

    В VB.NET проектах необходимо включить "Показать все файлы", чтобы просмотреть вложенные файлы шаблонов.

  2. Добавьте соответствующий шаблон создания кода EF 6.x. Откройте модель в конструкторе EF, щелкните правой кнопкой мыши область конструктора и выберите " Добавить элемент создания кода".

    • Если вы используете API DbContext (рекомендуется), генератор DBContext EF 6.x будет доступен на вкладке "Данные ".

      Примечание.

      Если вы используете Visual Studio 2012, необходимо установить этот шаблон с помощью средств EF 6. Дополнительные сведения см. в статье Get Entity Framework .

    • Если вы используете API ObjectContext, необходимо выбрать вкладку Online и найти генератор EntityObject EF 6.x.

  3. Если вы применили какие-либо настройки к шаблонам создания кода, их необходимо повторно применить к обновленным шаблонам.

4. Обновление пространств имен для всех основных типов EF, используемых

Пространства имен для типов DbContext и Code First не изменились. Это означает, что для многих приложений, использующих EF 4.1 или более поздней версии, вам не нужно ничего изменять.

Типы, такие как ObjectContext, которые ранее находились в System.Data.Entity.dll, были перемещены в новые пространства имен. Это означает, что вам может потребоваться обновить директивы using или Import для сборки в EF6.

Общее правило изменений пространства имен заключается в том, что любой тип в System.Data.* перемещается в System.Data.Entity.Core.*. Другими словами, просто вставьте Entity.Core после System.Data. Например:

  • 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.Entity.dll, по-прежнему используются часто и непосредственно для приложений на основе DbContext и поэтому не были перемещены в основные пространства имен. Это следующие страницы:

  • System.Data.EntityState => System.Data.Сущность. EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute

    Примечание.

    Этот класс был переименован; Класс со старым именем по-прежнему существует и работает, но теперь он помечен как устаревший.

  • System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions

    Примечание.

    Этот класс был переименован; класс со старым именем по-прежнему существует и работает, но теперь он помечен как устаревший.)

  • Пространственные классы (например, DbGeography, DbGeometry) перемещены из System.Data.Spatial => System.Data.Сущность. Пространственных

Примечание.

Некоторые типы в пространстве имен System.Data находятся в Файле System.Data.dll, который не является сборкой EF. Эти типы не перемещены и поэтому их пространства имен остаются неизменными.