T4: Acessando o banco de dados
Templates T4 são largamente usados para acessar o banco de dados e gerar código de acordo com os objetos(tabelas e etc). Vamos ver como podemos acessar o SQLServer usando templates tt.Antes de ver o código precisamos baixar ums dlls
1-Importar os assemblies
1: <#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
2: <#@ assembly name="Microsoft.SqlServer.Smo" #>
3: <#@ assembly name="Microsoft.SqlServer.Management.Sdk.Sfc" #>
4: <#@ assembly name="Microsoft.SqlServer.SqlEnum" #>
5: <#@ import namespace="System.IO" #>
6: <#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
2-Estabelecer a conexão
1: <#
2: Server server = new Server("NomeDaMaquina\\NomeDaInstancia");
3: Database database = new Database(server, "NomeDoDatabase");
4: database.Refresh();
5: #>
3- Gerando uma classe para cada tabela do banco
1: <#
2: foreach (Microsoft.SqlServer.Management.Smo.Table item in database.Tables)
3: {
4: #>
5: public class <#=item.Name#>{}
6: <# SaveOutput(item.Name+".cs");
7: }
8: #>
4- Usamos um método SaveOutput que está em outro tt que foi incluido no início do arquivo
1: <#@ include file="SaveOutput.tt" #>
5- Código do SaveOutput.tt
1: <#@ template language="C#" hostspecific="true" #>
2: <#@ import namespace="System.IO" #>
3: <#+
4: void SaveOutput(string outputFileName)
5: {
6: string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
7: string outputFilePath = Path.Combine(templateDirectory, outputFileName);
8: File.WriteAllText(outputFilePath, this.GenerationEnvironment.ToString());
9:
10: this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length);
11: }
12: #>