Entity Framework 4.3.1 - 6 EDMX (ObjectContext)

Я пытаюсь обновить проект с EF 4.3.1 до EF 6.0

В шаблоне используется 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

Ответ 1

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

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

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

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

  • Входите в поверхность дизайна диаграммы.
  • Щелкните правой кнопкой мыши и выберите "добавить элемент генерации кода"
  • Выберите "EF 6.X Entity Object Generator" и назовите его соответствующим "Template.tt"
  • Пусть генерируется генерация
  • Вернитесь к поверхности дизайна и убедитесь, что теперь Стратегия генерации кода T4
  • Удалить файл конструктора, созданный старым EF 5.X устаревшим

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