Я использую адаптер EntityFramework POCO, и поскольку есть ограничения на то, что Microsoft предоставляет доступ к метаданным, я вручную извлекаю информацию, которая мне нужна из xml. Единственная проблема заключается в том, что я хочу загрузить имена файлов ssdl, msl, csdl без прямой проверки узла узла подключения в app.config. Короче, где в ObjectContext/EntityConnection я могу получить доступ к этим именам файлов? В худшем случае мне нужно получить имя соединения из объекта EntityConnection, а затем загрузить его из app.config и проанализировать всю строку и извлечь сами имена файлов. (Но я, очевидно, не хочу этого делать). БлагодаряИзвлечение метаданных соединения Entity Framework
ответ
Я могу думать о двух способов использовать отражение здесь:
Dig в EntityConnection. Строка подключения должна быть где-то в виде частной переменной.
Файлы метаданных EDM встроены в сборку как ресурсы по умолчанию. Вы должны иметь возможность отображать сборку, содержащую EDM, и вытаскивать файлы напрямую. Используйте Reflector на вашей сборке, которая содержит ваш EDM, и вы должны увидеть встроенные msl, ssdl, csdl.
Я думаю, что вариант 2 более прочный в целом.
Вы посмотрели ObjectContext.MetadataWorkspace? Это не самая простая библиотека, но я смог получить всю необходимую мне информацию.
Юлия Лерман имеет хорошую главу на эту тему в ее EF book.
Да, это первое место, где я смотрел. Ничто не выглядит видимым. –
Что вы пытаетесь выбраться из необработанных XML-файлов, которые вы не можете получить из MetadataWorkspace? – TGnat
+1 интересный вопрос! Я думал, легко, что должно быть доступно без проблем - но кажется, что он довольно хорошо скрыт где-то глубоко в недрах EF ....... –
Да, я даже попытался использовать рефлектор, чтобы посмотреть на dll system.data но я не могу найти, что с ним делать. В настоящее время я закончил работу с ручным приложением app.config. Однако, если вы хотите получить более чистое решение. –