Entity Framework: Как вы обновляете модель при изменении БД? - PullRequest
58 голосов
/ 01 июня 2010

Если вы создаете файл edmx из базы данных, а затем изменяется база данных, как вы можете заставить модель принять это изменение?

Вы удаляете всю модель и регенерируете или можете обнаружить изменения?

Я вижу сообщение, в котором упоминается "Обновить вашу модель". команда мыши в файле edmx, но я ее не вижу.

Обновление вашего edmx для отражения изменений, внесенных в вашу базу данных (.net linq-to-entity)

Я только начинаю.

Ответы [ 8 ]

67 голосов
/ 02 июня 2010

Вы смотрите на дизайнера или в коде? Вы можете заставить дизайнер открыться, щелкнув правой кнопкой мыши по файлу EDMX и выбрав Open With -> ADO.NET Entity Data Model Designer

Щелкните правой кнопкой мыши на дизайнерской поверхности дизайнера EDMX и выберите Update Model From Database...

По умолчанию все сущности обновляются, новые сущности добавляются только при их выборе.


EDIT: Если это не освежает хорошо.

  • Выберите все таблицы и представления в конструкторе EDMX.
  • Удалить их.
  • Затем обновите модель из базы данных
17 голосов
/ 01 сентября 2010

Я обнаружил, что дизайнер "обновление из базы данных" может обрабатывать только небольшие изменения. Если вы удалили таблицы, изменили внешние ключи или (вздохнули) изменили сигнатуру хранимой процедуры с отображением функции, вы в конечном итоге попадете в такое испорченное состояние, что вам придется либо удалить все сущности и «добавить из базы данных» или просто удалите ресурс edmx и начните сначала.

4 голосов
/ 09 июня 2017

Это может помочь вам, ребята. (Я применил это к своим проектам)

Вот 3 простых шага.

  1. Перейдите в Solution Explorer . Найдите файл .edmx ( Обычно находится на корневом уровне )
  2. Откройте этот файл .edmx, откроется окно Model Diagram . Щелкните правой кнопкой мыши в любом месте этого окна и выберите « Обновить модель из базы данных ». Появится окно Update Wizard . Нажмите Готово, чтобы обновить вашу модель.
  3. Сохраните этот файл .edmx.

Вот и все. Он будет синхронизировать / обновлять вашу модель на основе изменений в вашей базе данных.

Для подробных инструкций. Пожалуйста, перейдите по ссылке ниже.

Сначала база данных EF с ASP.NET MVC: изменение базы данных и обновление ее модели.

2 голосов
/ 27 июля 2017

Обновление модели CodeFirst невозможно автоматически. Я тоже не рекомендую. Поскольку одним из преимуществ кода в первую очередь является то, что вы можете работать с классами POCO. Если вы изменили эти классы POCO, вам не нужно, чтобы какой-то автоматически сгенерированный код разрушал вашу работу.

Но вы можете создать шаблонное решение и добавить обновленную / добавленную сущность в новую модель. затем соберите и переместите новый файл cs в рабочий проект. таким образом, у вас не будет конфликта, если это новая сущность, вы можете просто добавить связанный cs файл в существующий проект. если это обновление, просто добавьте новое свойство из файла. Если вы просто добавляете несколько столбцов к одной или двум таблицам, вы можете вручную добавить их в свой класс POCO, вам не нужно никаких дополнительных работ, и в этом прелесть работы с классами Code-First и POCO.

0 голосов
/ 29 августа 2018

Здесь:

  1. Удалить таблицы из дизайнера EDMX
  2. Перестроить проект / SLN (это очистит класс модели)
  3. Обновление модели из базы данных (прочитайте все нужные вам таблицы)
  4. Перестроить проект / SLN (при этом будет воссоздан ваш класс модели, включая новые столбцы)
0 голосов
/ 30 мая 2018

Я работал над небольшим проектом, который включает Entity Framework, около десятка таблиц и около 15 хранимых процедур и функций. После нескольких недель разработки попытки обновить мои таблицы и хранимые процедуры дали неоднозначные результаты в том, что касается успешного обновления модели. Иногда изменения эффективны, в большинстве случаев - нет. Простые изменения столбцов (изменение порядка, добавление, удаление или переименование) иногда работают, в большинстве случаев - нет. Visual Studio, похоже, имеет больше проблем с обновлением, чем просто добавление нового. Это также показывает больше проблем с тем, что сохраненные изменения процесса не отражаются, особенно когда столбцы добавляются, удаляются или переименовываются. Я не обнаружил какого-либо последовательного поведения, поэтому я не могу сказать «Этот тип изменений всегда будет обновляться, а этот тип изменений не будет».

Конечный результат, если вам нужно 100% эффективное решение, удалите файл EDMX из проекта, добавьте элемент «Добавить» в проект (модель данных объекта ADO.NET) и убедитесь, что вы используете то же имя для имени модели , Это работает каждый раз.

0 голосов
/ 07 марта 2018

Я не знаю, почему оно не обновляется автоматически, но после создания решения любые классы моделей или шаблоны, которые вы удалили или изменили, будут обновлены из базы данных после того, как вы "Перестроите решение",

Это работает на моей Visual Studio 2015!

0 голосов
/ 21 марта 2014

Мне просто нужно было обновить модель .edmx. Параметр model / Run Custom Tool не обновлял поля для меня, но как только у меня был графический дизайнер, я смог переименовать поля вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...