Нужно определить имя контейнера для EDM-модели, также объекты и их параметры, которые там находятся. Как это можно сделать не рефлекшеном по сгенеренному коду, а по метаданным? Нашел MetadataWorkspace, но че-то там ничего особо интересного нету.
Как определить имя контейнера например, или имена доступных EntitySet-ов, или перебрать все сущности и определить какие из их свойств являются ключами? Это вообще можно сделать по метаданным?
Здравствуйте, Аноним, Вы писали:
А> Нужно определить имя контейнера для EDM-модели, также объекты и их параметры, которые там находятся. Как это можно сделать не рефлекшеном по сгенеренному коду, а по метаданным? Нашел MetadataWorkspace, но че-то там ничего особо интересного нету.
А> Как определить имя контейнера например, или имена доступных EntitySet-ов, или перебрать все сущности и определить какие из их свойств являются ключами? Это вообще можно сделать по метаданным?
MetadataWorkspace хранит информацию о концептуальной модели DataSpace.CSpace (conceptual model) и модели базы данных DataSpace.SSpace (storage model). Информация о маппинге между ними пользователю не доступна (где-то читал, что инфа о маппинге станет доступна начиная с версии 4.0 дотнета, но в бете её не обнаружил).
Загрузить метаданные можно так:
var workspace=((EntityConnection)context.Connection).GetMetadataWorkspace();
Получать через
workspace.GetItems(...)
и т.п.
В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.