#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:
Если под обновлением выбранных объектов вы подразумеваете только одну или несколько таблиц, вы можете удалить эти таблицы из модели, а затем добавить их обратно по отдельности, чтобы извлекать таблицы изменений, выбирая их по отдельности — я часто это делаю при изменении базовых таблиц (особенно во время разработки).
В конечном итоге вы теряете все изменения, внесенные вручную в эти повторно добавленные объекты после того, как объект / таблица была перенесена в модель (т. Е. Я часто переименовываю свои свойства навигации, а затем после каждого повторного импорта таблицы мне нужно вручную переименовывать их снова).