Как обновить правильно Модель Объекта после изменений структуры базы данных?

Я внес некоторые изменения в структуре таблицы и особенно отношениях между таблицами в моей базе данных SQL Server. Теперь я хочу обновить свой Объект, основанный на модели на этой новой структуре базы данных.

При щелчке правой кнопкой по edmx файлу я нахожу опцию "Update model from database". Но когда я делаю это, я получаю своего рода 50%-е обновление: новые столбцы появляются в классах Объекта, но я смущен большим количеством свойств навигации, которые находятся все еще там в модели, хотя соответствующие отношения внешнего ключа больше не существуют в базе данных. (Редактирование: Также участники в образцовых классах не удалены, хотя столбцы в базе данных были удалены.)

Я делаю что-то не так? Или есть ли другая опция обновить модель включая удаление свойств навигации? Или я должен удалить те свойства навигации вручную в образцовых файлах?

Я использую Версию 1 Платформы Объекта (VS 2008 SP1).

Спасибо за справку заранее!

16
задан Slauma 6 April 2010 в 12:38
поделиться

1 ответ

Вы делаете обновление правильно. Однако после автоматического создания модели ее можно настроить. При обновлении разработчик EF хочет попытаться сохранить любые сделанные вами настройки. Об этом надо догадываться, а это не всегда верно. Я постараюсь объяснить, как он предполагает, так как это может вам помочь.

EDMX состоит из трех частей:

  • Схема клиента (CSDL)
  • Схема хранилища (SSDL)
  • Сопоставление между клиентом и хранилищем (MSL)

Дизайнер «владеет» схемой хранилища. Он будет восстанавливать это практически с нуля при каждом обновлении. Хотя можно настроить схему магазина, вручную отредактировав SSDL, вы часто теряете эти изменения при обновлении модели.

Вы, с другой стороны, «владеете» клиентской схемой.Дизайнер сгенерирует для вас клиентскую схему при первом запуске, а также сгенерирует клиентскую схему для недавно импортированных объектов метаданных базы данных, таких как недавно сопоставленные таблицы или столбцы. Но после того, как клиентская схема была сгенерирована для объекта, она обычно не создается повторно, потому что дизайнер пытается сохранить ваши настройки. Поэтому, если вы изменяете свою базу данных таким образом, чтобы повлиять на схему клиента, вы должны обновить схему клиента вручную. Вы можете сделать это в дизайнере графического интерфейса или вручную в XML.

В вашем случае, вероятно, проще всего было бы просто выбрать навигацию в дизайнере графического интерфейса и удалить ее. Это предполагает, что свойство ID для навигации в базе данных больше не существует ни на одной из сторон отношения.

16
ответ дан 30 November 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: