Модель обновления платформы 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