Думайте о T4 как о файле ASPX с кодом сервера. HTML визуализируется напрямую, и все <% %>
блоки кода выполняются и оцениваются во время выполнения.
Тот же подход здесь. Весь код, который находится внутри блоков <# #>
, выполняется, когда шаблонизатор T4 выполняет шаблон. Внутри этого блока вы можете делать все, что умеет фреймворк. При желании вы можете открывать соединения с базой данных, читать данные и генерировать из них код (так же, как если бы вы подключались к базе данных и генерировали HTML из табличных данных в файле ASPX).
Так что вы можете сделать это (после того, как у вас уже есть читатель БД):
...
public enum UserTypeFromDBLookupTable
{
<# while(reader.Read()) { #>
/// <summary><#= reader.Get("Description") #></summary>
<#= reader.Get("Name") #> = <#= reader.Get("UserTypeID") #>,
<# } #>
}
...
и он выведет перечисление для вас на основе данных в некоторой таблице поиска (*). Вы можете видеть, что это довольно мощный и гибкий инструмент, так как вы можете делать все, что вам нравится и что вам нравится.
комментарий (*)
Пример кода не работает напрямую, потому что он упрощен, чтобы показать вам, как все работает. Например, я пропустил код, который должен был бы удалить последнюю запятую