У меня есть производный класс DbContext, чьи классы объектов-членов настроены с использованием Fluent API. Я хочу получить эти конфигурации и отношения программно. код для этого уже установлен, и я переношу его на шаблон T4 для генерации кода.Извлечение свободной конфигурации программно без создания экземпляра DbContext
В то время как большая часть генерации кода использует отражение, беглый конфигурация требует класс контекст быть создан для того, чтобы получить:
- ObjectContext
- EntityObjects
- EntityContainer
- EntitySets
- Etcetera
Поскольку мы не используем атрибуты свойств, отражение не помогает.
Это нормально работает во время выполнения, но установление DbContext в шаблоне T4 вызывает всевозможные проблемы. Это иногда приводит к сбоям VS, дает странные ошибки, создает циклическую зависимость и т. Д.
Если я отлаживаю шаблон T4, он запускается без ошибок, но фоновый процесс блокирует проект, содержащий класс и сущности DbContext. Поэтому каждый раз, когда происходит изменение объектов, я должен перезапустить VS три раза, выполняя разные шаги. Тьфу!
Мне было интересно, есть ли способ получить метаданные/конфигурацию объекта без создания экземпляра класса контекста. Любые рекомендации будут оценены.
Спасибо Стив. Это отличный совет. Я мог бы написать это в консольное приложение, назовите его как шаг после сборки в проекте уровня данных, а затем запускайте потребляющий T4. Хотя мне интересно, есть ли способ прочитать XML в какой-то объектной модели EF, а не напрямую обращаться к XML. –
Может это? http://stackoverflow.com/questions/29768118/using-iedmmodel-to-resolve-entityset-name-into-entityname-products-product –
Это потрясающий ответ, спасибо! В противном случае я был бы мозгом, который бы сам разбирал фактический код конфигурации, и это тоже без Рослина. : P –