2009-08-20 2 views
1

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

+0

+1 интересный вопрос! Я думал, легко, что должно быть доступно без проблем - но кажется, что он довольно хорошо скрыт где-то глубоко в недрах EF ....... –

+0

Да, я даже попытался использовать рефлектор, чтобы посмотреть на dll system.data но я не могу найти, что с ним делать. В настоящее время я закончил работу с ручным приложением app.config. Однако, если вы хотите получить более чистое решение. –

ответ

0

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

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

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

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

0

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

Юлия Лерман имеет хорошую главу на эту тему в ее EF book.

+0

Да, это первое место, где я смотрел. Ничто не выглядит видимым. –

+0

Что вы пытаетесь выбраться из необработанных XML-файлов, которые вы не можете получить из MetadataWorkspace? – TGnat