Как правильно обновить Entity Model после изменения структуры базы данных?
==========================================================================

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

 Щелкнув правой кнопкой мыши на файле EDMX, я нахожу опцию «Обновить модель из базы данных». Но когда я делаю это, я получаю вид 50% -ого обновления: новые столбцы появляются в классах Entity, но меня смущает множество свойств навигации, которые все еще присутствуют в модели, хотя соответствующие отношения внешних ключей больше не существуют база данных. ( **Изменить:** также члены в классах модели не удаляются, хотя столбцы в базе данных были удалены.) 

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

 Я использую Entity Framework версии 1 (VS 2008 SP1). 

 Спасибо за помощь заранее! 

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

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

* Клиентская схема (CSDL)
* Схема магазина (SSDL)
* Отображение между клиентом и магазином (MSL)

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

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

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