Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В предыдущих версиях 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.
- Щелкните проект правой кнопкой мыши и выберите пункт "Управление пакетами NuGet...
- На вкладке "Интернет" выберите 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.
Удалите существующие шаблоны создания кода. Обычно эти файлы будут называться <edmx_file_name>.tt и <edmx_file_name>.Context.tt и будут вложены под вашим файлом edmx в обозревателе решений. Вы можете выбрать шаблоны в обозревателе решений и нажать клавишу Del , чтобы удалить их.
Замечание
В проектах веб-сайта шаблоны не будут вложены в файл edmx, но перечислены вместе с ним в обозревателе решений.
Замечание
В VB.NET проектах необходимо включить "Показать все файлы", чтобы просмотреть вложенные файлы шаблонов.
Добавьте соответствующий шаблон создания кода 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.
Если вы применили какие-либо настройки к шаблонам создания кода, их необходимо повторно применить к обновленным шаблонам.
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 и поэтому не были перемещены в пространства имен Core . К ним относятся:
- System.Data.EntityState => System.Data.Entity.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.Entity.Spatial
Замечание
Некоторые типы в пространстве имен System.Data находятся в System.Data.dll, которая не является сборкой EF. Эти типы не перемещены и поэтому их пространства имен остаются неизменными.