Code: (for a template include)
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Data" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
<#+
public static Dictionary<string, Dictionary<int, string>> GetSettings()
{
Dictionary<string, Dictionary<int, string>> settings = new Dictionary<string, Dictionary<int, string>>();
try
{
using (SqlConnection sqlServerConnection = new SqlConnection("my Connection String"))
{
sqlServerConnection.Open();
SqlCommand sqlCommand = new SqlCommand("SELECT Group, Code, Description FROM Lookups WHERE Code = -1", sqlServerConnection);
SqlDataReader sqlReader = sqlCommand.ExecuteReader();
while(sqlReader.Read())
{
settings.Add((sqlReader.GetString(2) ?? string.Empty).Trim(), new Dictionary<int, string>());
}
sqlCommand = new SqlCommand("SELECT Group, Code, Description FROM Lookups WHERE Code != -1", sqlServerConnection);
sqlReader = sqlCommand.ExecuteReader();
while(sqlReader.Read())
{
foreach(var setting in settings)
{
setting.Value.Add(sqlReader.GetInt32(1), (sqlReader.GetString(2) ?? string.Empty).Trim());
}
}
sqlServerConnection.Close();
}
}
catch (Exception)
{
}
return settings;
}
#>
Code for the tt template:<#@ include file="DbHelper.ttinclude" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
namespace Lab.Generate_Enums_Dynamically
{
<#
var settings = GetSettings();
foreach (var settingGroup in settings)
{
#>
public enum <#= settingGroup.Key.Replace(" ", "_") #>
{
<#
List<string> enumEntries = new List<string>();
foreach(var setting in settingGroup.Value)
{
enumEntries.Add(string.Format("{0} = {1}", setting.Value.ToString().Replace(" ", "_"), setting.Key));
}
#>
<#= string.Join(",\n", enumEntries) #>
}
<# } #>
}