Извлечение метаданных соединения Entity Framework - PullRequest
1 голос
/ 20 августа 2009

Я использую POCO-адаптер EntityFramework, и поскольку у Microsoft есть ограничения на доступ к метаданным, я вручную извлекаю необходимую информацию из XML. Единственная проблема заключается в том, что я хочу получить имена файлов ssdl, msl, csdl для загрузки без необходимости непосредственно проверять узел строки подключения в app.config. Короче говоря, где в ObjectContext / EntityConnection я могу получить доступ к этим именам файлов? В худшем случае мне нужно получить имя соединения от объекта EntityConnection, затем загрузить его из app.config, разобрать саму строку и извлечь имена файлов самостоятельно. (Но я, очевидно, не хочу этого делать). Спасибо

Ответы [ 2 ]

0 голосов
/ 20 августа 2009

Вы смотрели на ObjectContext.MetadataWorkspace ? Это не самая простая библиотека для работы, но я смог получить всю необходимую информацию.

У Джулии Лерман есть хорошая глава на эту тему в ее EF книге.

0 голосов
/ 20 августа 2009

Я могу придумать два способа использования отражения здесь:

  1. Копайте в EntityConnection. Строка соединения должна быть где-то там как частная переменная.

  2. Файлы метаданных EDM по умолчанию встроены в сборку как ресурсы. Вы должны быть в состоянии отразить сборку, которая содержит EDM, и вытащить файлы напрямую. Используйте Reflector на вашей сборке, содержащей ваш EDM, и вы должны увидеть встроенные msl, ssdl, csdl.

Я думаю, что вариант 2 в целом более устойчив.

...