#.net #database #entity-framework #entity-framework-4 #poco
#.net #База данных #entity-framework #entity-framework-4 #poco
Вопрос:
Я «Погуглил» и «облазил» весь Интернет, пытаясь решить эту проблему… У меня не было успеха, поэтому я вернулся к ADO.NET 4.x для продолжения моей работы
У меня есть программа, в которой пользователь может выбрать и открыть любую базу данных… Таблицы, представления, сохраненные процедуры и т.д. Выбранной базы данных отображаются в виде дерева, чтобы пользователь мог щелкнуть узел и просмотреть / отредактировать данные в таблице.
После нескольких попыток с EF4 (сначала база данных, сначала модель, сначала код и т.д.) Я не могу найти способ во время выполнения генерировать объекты для выбранной пользователем базы данных…
Кто-нибудь может предоставить дополнительную информацию … может быть, пример кода???
Комментарии:
1. Преимущества Entity Framework в значительной степени спорны, если вы не пишете код для конкретной структуры данных. Это объектно-реляционный Mapper, и вас, похоже, интересует только его реляционная часть.
Ответ №1:
Вы не можете. Entity Framework (как и любой другой ORM) используется для сопоставления модели данных с логической моделью. Если нет сопоставления (и нет логической модели), то нет Entity Framework.
В этом случае лучше всего использовать ADO.
После некоторых вопросов это возможно сделать, но для этого требуются сумасшедшие шаги.
Для этого вам нужно будет сгенерировать edmx xml из информации, которую вы получите, запросив основную базу данных, из этого xml сгенерируйте классы (контекст данных и сущности) во время выполнения, загрузите их в свой AppDomain через code dom, а затем вы могли бы использовать этот динамически сгенерированный контекст данных через Entity Framework.
В одном предложении: для такого сценария, когда ваша модель данных полностью неизвестна и меняется, придерживайтесь старого доброго’ ADO.NET . Она создана специально для этого.
Комментарии:
1. Привет, Гийом… Слушание маркетинговой EF от Microsoft — это будущее… Для тестов, которые я сделал … для новой архитектуры (ObjectContext ObjectSets)… и для концептуальной модели… Я убежден в этом! Если вы покопаетесь в коде и фреймворке, вы увидите, что при множестве ok work вы можете сгенерировать множество вещей во время выполнения и заставить их работать… Ну, я не хочу терять это время и создал НЕСТАНДАРТНУЮ библиотеку, а затем обнаружил, что Microsoft поддерживает это… Это очень важный вопрос… возможно, в ней много недокументированного… Я надеюсь, что какой-нибудь EF-гуру сможет просветить нас всех об этом… Спасибо. ~ ZEE ~
2. Дело в том, что то, что вы хотите сделать, противоречит духу EF (и технологий, основанных на ORM). ORM — это способ работы с вашим логическим доменом в центре вашей работы. Что вы хотите сделать, так это поместить ваши данные в вашу модель.
3. Иногда мы не знаем модель и хотим работать с данными … что-то вроде редактора базы данных должно работать таким образом. Также с объектами .net4 dynamica это кажется возможным… прочитайте схему базы данных a и сгенерируйте динамические объекты с полученной информацией. Я буду продолжать следить за этим… Я пытаюсь оставить ado… ORM более практичны, а естественное отношение data<-> object лучше.