Visual Studio's T4 Code Generation: C#: Template Harness: Listing 1
A simple select stored procedure can be created from database metadata. The AppVenture Community Generation Harness (available with source code) retrieves the corresponding tables from a Managed Extensibility Framework part and loops through them calling this template once for each loop. Within the context of the harness, this template is entirely self-contained.
<pre class="codesnippet"><#@ template language="C#" debug="true" hostspecific="true" #>
<#@ output extension=".sql" #>
<#@ assembly name="CommonDatabaseContracts.dll" #>
<#@ property name="table" type="AppVenture.Common.IDbTableMetadata" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="AppVenture.Common" #>
<# TemplateOutputFileName = table.Name; #>
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Select<#= table.Name #>
AS
BEGIN
SET NOCOUNT ON;
SELECT <#= ConcatenateWithComma(table.TableColumns) #>
FROM <#= table.Name #>
END
GO
<#+
string ConcatenateWithComma(IEnumerable<IDbTableColumnMetadata> list)
{
string ret = String.Empty;
foreach (IDbTableColumnMetadata item in list)
{
ret += item.Name + ", " ;
}
return ret.Substring(0, ret.Length - 2);
}
#>