Существует ли шаблон T4, который обходит EDMX и обращается к базе данных для создания классов EF4.1 dbContext?

Я бы очень хотел избавиться от отвратительной капли EDMX, с которой мы сейчас боремся в нашем проекте. Наш проект — это прежде всего база данных, и в настоящее время мы создаем файл EDMX, используя ужасный и глючный конструктор EDM, откуда мы генерируем объекты DbContext и POCO, используя шаблоны T4.

По мере развития проекта мы обнаруживаем, что у нас очень мало различий между нашей моделью базы данных и нашей моделью сущностей, по сути, сопоставление сущности с таблицей 1-к-1, что, по-видимому, является режимом, который больше всего предпочитает EF. Наше единственное отклонение от этого — однократное использование наследования Table-per-Type между четырьмя нашими сущностями. Само по себе это не оказалось хорошей конструкцией, и от нее вполне можно было бы отказаться.

Тогда мой вопрос: нам не нужен файл EDMX, мы должны иметь возможность управлять созданием наших классов DbContext и сущностей непосредственно из модели базы данных, есть ли шаблон T4, который может это сделать?

Я нашел этот пост от Олега Сыча пару лет назад, который предоставил шаблоны T4 для достижения этой цели, но вывод предназначен для ObjectContext, а не для DbContext. Я мог бы, конечно, попытаться улучшить то, что было сделано здесь, но я не хочу изобретать велосипед, если у кого-то это уже работает.

Какие-либо предложения?


person James Close    schedule 10.07.2012    source источник


Ответы (1)


Для создания Модели POCO, классы сопоставления и dbContext из базы данных.

person kenwarner    schedule 10.07.2012
comment
Спасибо за это - я взглянул на Power Tools, но из того, что я мог понять, это одноразовый процесс. Сначала мне нужно оставаться в базе данных, и каждый раз, когда моя база данных изменяется, я обновляю свою модель объекта. Это похоже на то, чтобы сначала создать решение для кода из существующей базы данных, которое мне затем пришлось бы поддерживать в первую очередь в будущем. - person James Close; 10.07.2012
comment
Хорошо, я потратил еще немного времени на изучение этого - и это работает итеративно, я могу повторно запускать реверс-инжиниринг каждый раз, когда изменяется БД. Единственная проблема сейчас заключается в том, что пользовательский интерфейс громоздкий. Отражение EFPowerTools.dll показывает, что было бы довольно просто выделить код настройки строки подключения и запустить шаблоны, ключевая функция, по-видимому, Microsoft.DbContextPackage.Handlers.ReverseEngineerCodeFirst() , хотя сначала спросим, ​​есть ли у разработчиков какие-либо планы по предоставлению такой функциональности. - person James Close; 11.07.2012