Подтвердить что ты не робот

Обновление EF 4 EDMX до EF 6

Мое приложение использует базу данных сначала EDMX в EF 4. Я хотел бы обновить все до EF 6. После получения EF 6 с NuGet мне пришлось внести много изменений в мои классы, которые используют мою EF-модель, потому что пространства имен были изменены в EF 6. Затем я понял, что код, созданный моим EDMX, также использует неправильные пространства имен и т.д. Я пока не использую пользовательский T4.

Как мне обновить существующий EDMX до EF 6.

Спасибо.

4b9b3361

Ответ 1

  • Вы удаляете старые .tt файлы
  • Вы открываете файл edmx в режиме конструктора (чтобы вы могли видеть свою модель)
  • Щелкните правой кнопкой мыши на свободном пространстве
  • Выберите Добавить элемент генерации кода.
  • В диалоговом окне выберите "EF 6.x DbContext Code Generation Item" (что-то вроде этого)
  • Сохраните edmx и все классы будут созданы для вас, с новыми пространствами имен и т.д.

Ответ 2

В дополнение к ответам, приведенным здесь Rand Random и Dean Oliver, позвольте мне упомянуть следующее ссылка MSDN, описывающие общие шаги для обновления до EF6. Не стоит недооценивать требуемые шаги управления...

Дорожная карта (см. подробности в приведенной выше ссылке):

  • Подготовка: Установите Инструменты Entity Framework 6 для Visual Studio 2012/13

  • Установите пакет EF6 NuGet

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

  • Поменяйте модели EF Designer (EDMX) на с помощью генерации кода EF 6.x.

    Примечание:

    • Если вы получаете сообщение "Дизайнер модели данных сущности не может отобразить запрошенный файл", затем нажмите ссылку изменить в отображаемом текстовом сообщении "Модель данных сущности Дизайнер... Вы можете изменить...", который отобразит таблицы. Выделите все с помощью Ctrl + A, затем нажмите Del, затем щелкните правой кнопкой мыши и выберите "Обновить модель из базы данных" и, наконец, сохраните с помощью Ctrl + S. Это обновит модель до последней версии, используя стандартный T4-шаблон "EF 6.x DbContext Generator".

    • Если вы использовали ObjectContext в своем проекте, вам следует рассмотреть возможность загрузки шаблона "EF 6.x EntityObject Generator" . Затем щелкните правой кнопкой мыши в дизайнере модели, выберите "Добавить элемент генерации кода", затем выберите имя, которое вы еще не использовали. Он будет генерировать правильные классы, после чего вы должны удалить все старые ( "*.tt" ) файлы и связанные с ними файлы сгенерированных классов ( "*.cs" ).

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

    • любой тип в System.Data.* перемещается в System.Data.Entity.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

N.B.:

Ответ 3

Как и шаги, предложенные Rand Random. Не забудьте установить инструменты Entity Framework 6 для Visual Studio 2012, если вы используете VS2012. скачать здесь

Это гарантирует, что шаблон EF 6.x DbContext Generator отображается при нажатии кнопки Шаг 4: Добавить элемент генерации кода