Может ли разработчик Entity Framework 4.1 «обновлять модель из базы данных» только для выбранных объектов?

#c# #entity-framework #entity-framework-4.1 #edmx #edmx-designer

#c# #entity-framework #entity-framework-4.1 #edmx #edmx-designer

Вопрос:

Ситуация: Иногда схема базы данных — это не то, что вы считаете идеальным представлением системной информации, и вы, возможно, не сможете ее изменить. Мы использовали Entity Framework для создания более удобной концептуальной модели для программирования в подобных ситуациях. Это означает обновление модели из базы данных, а затем изменение ее самостоятельно, либо через конструктор, либо через файл .edmx напрямую с использованием текстового редактора.

Проблема: Когда вы обновляете модель из базы данных, все ваши тщательно внесенные изменения выбрасываются из окна. Это может сделать добавление новых объектов настоящей проблемой, поскольку вы в основном вынуждены делать это путем непосредственного редактирования файла .edmx.

Вопрос: Есть ли способ заставить Entity Framework обновлять только выбранные объекты из базы данных? Или можно ли указать ему оставить остальную часть модели в покое при добавлении нового объекта?

Спасибо!

Ответ №1:

Нет, нет способа выполнять выборочные обновления с помощью встроенного конструктора. Также дизайнер не удаляет все ваши изменения. Обычно это не касается концептуальной модели (за исключением некоторых редких случаев, когда он постоянно переименовывает некоторые ассоциации) и сопоставления, но он всегда удаляет модель хранения и переопределяет ее новым определением. Я без каких-либо проблем работал с модификациями моей концептуальной модели и отображением и запускал обновления из базы данных.

Конструктор работает как любой другой в Visual Studio — прикосновение к сгенерированному коду (модели хранения) не поддерживается. Как только вы это сделаете, вы больше не сможете использовать обновление из базы данных.

Существует коммерческий инструмент, который, вероятно, поддерживает лучшее обновление модели — вы можете попробовать пробную версию.

Ответ №2:

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

В конечном итоге вы теряете все изменения, внесенные вручную в эти повторно добавленные объекты после того, как объект / таблица была перенесена в модель (т. Е. Я часто переименовываю свои свойства навигации, а затем после каждого повторного импорта таблицы мне нужно вручную переименовывать их снова).