2013-11-13 3 views
12

Я пытаюсь обновить проект с EF 4.3.1 для EF 6.0Entity Framework 4.3.1 6 EDMX (ObjectContext)

Шаблон использует ObjectContext и теперь, когда я изменить шаблон, это перезаписывания сгенерированный код в файле * .Designer.cs со старыми пространствами имен EF 4.3.1, поэтому разрывы сборки.

Есть ли способ остановить это? Я не вижу файл * .tt, чтобы взломать. Регенерация EDMX на самом деле не вариант, поскольку в концептуальной модели были значительные настройки (я буду на ней целыми днями!).

Я пробовал создать новый EDMX в качестве теста и обнаружил ту же проблему. Как только я изменил генерацию кода на «Default» для использования ObjectContext, файл EDMXName.Designer.cs написан с использованием старых пространств имен.

using System; 
using System.ComponentModel; 
using System.Data.EntityClient; 
using System.Data.Objects; 
using System.Data.Objects.DataClasses; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.Xml.Serialization; 

Это сводит меня с ума - я думаю, что я буду иметь, чтобы взломать его вниз EF 5.0

ответ

21

Я решил эту проблему. Это связано с тем, что вы обновили EF 6.X от EF 5.X. Ваш edmx по-прежнему находится в старой стратегии генерации устаревших.

Что вам нужно:

После установки 1 из se, которые вы хотите создать резервную копию файлов edmx и designer (или использовать источник управления). Перезапустите Visual Studio.

После перезапуска Visual Studio вы хотите идти в свой проект и:

  1. Получить в дизайн диаграмма поверхности
  2. правой кнопкой мыши и выберите «добавить код пункта поколения»
  3. Выберите «EF 6 .X Entity Object Generator "и назовите его подходящим, например" Template.tt "
  4. Позвольте генерации произойти
  5. Вернитесь на поверхность дизайна и убедитесь, что стратегия генерации кода не является ж T4
  6. Удалите файл дизайнера, созданный старой наследие EF 5.X

Это дает вам ваш ObjectContext производный контекст, а также все сопоставления более новый EF 6.0 пространств имен.

+2

Спасибо за это Джереми. В настоящее время это работает, по большей части. Я действительно не понимаю, почему процесс обновления не справляется с этим для вас. * вздох * –

+0

Да, я потратил 2 часа, пытаясь заставить его работать. Его хлопот, но рад его здесь, чтобы другие теперь следовали. – Jeremy

+1

Вам также нужно изменить некоторые пространства имен, см. Аналогичный вопрос: [Обновление EF4 EDMX до EF6] (http://stackoverflow.com/q/19496744/1016343). – Matt

Смежные вопросы