Как синхронизировать модель после использования кода First из базы данных с использованием Entity Framework 6.1 и MVC 5?

asp.net-mvc-5 c# ef-code-first ef-database-first entity-framework-6

Вопрос

Предположения

  • Использование EF 6.1, MVC 5, VS 2013, C #

  • У меня есть существующая модель базы данных, разработанная в Toad DM для SQL Server, и очень важно постоянно ее обновлять

Шаги и заметки

  1. Используя ADO.NET Entity Data Model, я выбрал Code First from Database ( новая функция в EF 6.1 ) для генерации моделей. Примечание. Класс классов и класс DbContext сгенерированы успешно, но не были созданы файлы .edmx или .tt .

  2. Затем я добавил новый элемент эстакады: MVC 5 Controllers с представлениями, используя Entity Framework. Примечание. Удалены успехи, контроллеры и представления

Вопрос

Отныне я не хочу использовать Code First для обновления моей базы данных. Вместо этого я хочу, чтобы модели обновлялись на основе изменений базы данных. Что делать дальше? Если у меня нет файла edmx, я не смогу обновить классы модели из базы данных?

Популярные ответы

Код мастера модели данных Entity Сначала из базы данных отлично справляется с созданием классов сущностей, как если бы они были созданы в стиле Code First. Вы спрашиваете, есть ли способ обновить эти классы по мере изменения вашей базы данных, аналогично стилю EDMX «Обновить модель из базы данных». Из того, что я исследовал это не представляется возможным с помощью встроенного инструментария. Тем не менее, вот одно обходное решение, которое я нашел полезным:

Предположим, у меня есть база данных с таблицей продуктов и таблицей клиентов. Первоначально я создал класс StoreDBContext и выбрал продукт как один из моих объектов. Теперь я хочу добавить таблицу клиента в качестве нового объекта в существующий контекст. Вот как это сделать с помощью мастера Code First Wizard:

  1. Создайте новую модель данных Entity, вызовите ее StoreDBContextTemp или что-то другое Добавить новый элемент
  2. Сначала выберите код из мастера базы данных. сначала код из базы данных
  3. Выберите клиента как объект для добавления (только клиент) и заполните мастер добавить таблицу
  4. Откройте вновь созданный файл контекста StoreDBContextTemp.cs и скопируйте виртуальные свойства ваших добавленных объектов:

public virtual DbSet<Customer> Customers {get; set;}

  1. Вставьте эти новые свойства в свой класс Original StoreDBContext.cs dbcontext.
  2. Удалите StoreDBContextTemp.cs и удалите строку подключения для StoreDBContextTemp в app.config / web.confg и т. Д.
  3. Теперь вы можете использовать Customer в классе StoreDBContext

Если вы добавляете или удаляете таблицы, вам нужно вручную настраивать поля, но по крайней мере вам не придется вручную писать десятки свойств каждый раз, когда к модели добавляется новая таблица.




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему