Ссылка на код сначала DbContext из шаблона T4? - PullRequest
0 голосов
/ 03 марта 2012

У кого-нибудь есть образцы для ссылки на Code First DbContext из шаблона T4?

Я нашел несколько примеров T4, которые используют .dbml в качестве источника, а также ссылки на базу данных. Я хотел бы перебрать и построить файлы JavaScript для всех классов в контексте. Мне трудно понять, как ссылаться на переменную EnvDTE, чтобы получить DbContext. Оттуда я буду преобразовывать в ObjectContext и перебирать классы для генерации кода.

Есть идеи или примеры?

1 Ответ

1 голос
/ 03 марта 2012

Информация о том, что вы можете скомпилировать сначала код, содержащий сборку, до .dll, а затем в процессе T4 загрузить DLL и прочитать данные из нее через отражение.

Мы применили такой подход в процессе, где у нас были средства для получения классов сериализации database =>, но мы не могли помешать этой фазе с T4; только после генерации кода было сделано для сериализации классов. И в этом случае было проще скомпилировать его, а затем прочитать через рефлексию.

Если вы придерживаетесь этого подхода, вам придется иметь дело с тем фактом, что вам сначала нужно собрать часть приложения, а затем использовать генерацию T4 для этого, чтобы выполнить оставшееся. Если вы создаете файлы Javascript, это может упростить процесс.

Вы можете сделать свое отражение на основе T4 как «предварительно обработанное», чтобы вы могли запустить его в сценарии после сборки.

РЕДАКТИРОВАТЬ: Добавлена ​​демонстрация кейса на семинаре.

http://abstractiondev.wordpress.com/2012/03/09/microsoft-techdays-2012-finland-adm-materials/

Загрузите демонстрацию с Github и посмотрите на решение "T4 Demos.sln", демонстрация Advanced7.tt. Он анализирует типы и свойства по заданному имени сборки.

...