Модель обновления платформы Entity из базы данных, не генерирующей класс cs для вновь добавленной таблицы в классе tt

Я использую сущность framework 5 с visual studio 2012.

У меня есть существующая модель. Теперь я хочу добавить новую таблицу к этой существующей модели. Для этого я открыл файл edxm и, щелкнув правой кнопкой мыши, я успешно обновил модель.

Теперь, в "Model Browser" в разделе "EntityTypes" для модели, я вижу, что имя таблицы существует. Но в обозревателе решений он не показывает автоматически сгенерированный файл .cs для таблицы, которую я добавил недавно в файле .tt.

Я попробовал "запустить специальный инструмент", но он не сгенерировал класс. Также перезапустили Visual Studio, но результат будет таким же.

Может ли кто-нибудь мне помочь?

Спасибо

Ответ 1

Проблемы

  • Если у вас есть имя таблицы tblEmployee в базе данных, но после добавления "Модели данных сущностей" в файле EDMX вы изменили объект tblEmployee на Employee, затем сохраните и создайте. Но классы для измененного имени автоматически не генерируются в файле Model1.tt.
  • Когда " Обновить модель из базы данных" для добавления новой таблицы, возникает проблема.
  • Также недоступен в MVC При создании представления с помощью класса модели /Create Controller с действиями с использованием EntityFramework

Эта проблема для ранней версии VS2012.Эта проблема решена в обновленной версии VS2012.

Решение

У нас есть решение для этого с ранней версией VS2012 и EF 5.0

Выполните шаги

  • Щелкните правой кнопкой мыши на Model1.tt и выберите "Запустить пользовательский инструмент" и "Создать сейчас". Смотрите, как генерируются классы.
  • Щелкните правой кнопкой мыши на Model1.Context.tt и выберите "Запустить пользовательский инструмент", затем "Сохранить и построить", см. свойство "IN". Контекстный класс генерируется как

    public DbSet<Employee> Employees { get; set; } 
    

Сохранить и построить решение

Model1Context context=new Model1Context();
List<Employee> empList= context.Employees.ToList();

Это сработало для меня. Но имейте в виду, что все еще EF 6.0 не может создавать строительные леса, когда "создаёт контроллер и просматривает с помощью сущности" в MVC с помощью этой виртуализации VS2012. Вы должны использовать EF 5.0 или обновить VS2012 с новым обновлением.

Ответ 2

В этом случае, что я делаю, я просто удаляю захватывающую модель, а затем нажимаю на добавление и просто добавлю новую добавленную таблицу!

Если это ошибка с файлом edmx, находящимся в папке, теперь она исправлена ​​- загрузите и установите VS 2012 Update 1. Вы можете получить ее от:

http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update

Ответ 3

Решил сам.

Проблема была в файлах filename.Context.tt и filename.tt.

Имя файла диаграммы для переменной const string inputFile, указанное в обоих файлах, отличается от существующего файла диаграммы (файл .edmx). Обновил его с существующим именем файла диаграммы, а затем обновил модель из базы данных. Теперь работа хорошая.

Ответ 4

Я добавил первичный ключ в новую таблицу. Это решает проблему.

Ответ 5

Мы начали испытывать проблемы с нашим файлом .edmx после обновления файла проекта из этого типа:

<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

к этому типу:

<Project Sdk="Microsoft.NET.Sdk">

Я нашел этот подход сработал:

  • запустите пользовательский инструмент на .tt(Visual Studio здесь зависает, потому что пользовательский инструмент не может добавить файлы в новый формат проекта, но файлы модели уже созданы)
  • принудительно закрыть, а затем снова открыть Visual Studio
  • запустить пользовательский инструмент на .Context.tt