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

в предыдущих версиях EF код был разделен между основными библиотеками (в основном System.Data.Entity.dll), поставляемыми в составе платформа .NET Framework и нестандартных (OOB) библиотек (в основном EntityFramework.dll), поставляемых в пакет 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 (EDMX) для использования создания кода EF 6. x

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

Примечание

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

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

    Примечание

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

    Примечание

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

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

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

      Примечание

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

    • Если вы используете интерфейс ObjectContext API, необходимо выбрать вкладку "в сети " и найти генератор 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. *. Иными словами, просто вставьте сущность. Core. после System. Data. Пример:

  • System. Data. Ентитексцептион = > System. Data.>. ентитексцептион
  • System. Data. objects. ObjectContext = > System. Data.>. Objects. ObjectContext
  • Класс System. Data. objects. AMO. RelationshipManager = > System. Data.>. Objects. coclass. RelationshipManager

Эти типы находятся в основных пространствах имен, так как они не используются напрямую для большинства приложений на основе DbContext. Некоторые типы, которые были частью System.Data.Entity.dll, по-прежнему используются как обычно, так и напрямую для приложений на основе DbContext и поэтому не были перемещены в основные пространства имен. А именно:

  • System. Data. EntityState = > System. Data.>. EntityState
  • Класс System. Data. objects. AMO. Едмфунктионаттрибуте = > System. Data.>

    Примечание

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

  • System. Data. objects. Ентитифунктионс = > System. Data.>

    Примечание

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

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

Примечание

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