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);
}
#>
comments powered by Disqus
Most   Popular
Upcoming Events

.NET Insight

Sign up for our newsletter.

Terms and Privacy Policy consent

I agree to this site's Privacy Policy.