使用T4模板,它是否会将数据库作为一个可以吐出代码的对象?

时间:2009-11-30 18:57:04

标签: .net visual-studio t4

使用T4模板,它是否会将数据库作为一个可以吐出代码的对象?

或者你需要那个工具visualt4吗?

2 个答案:

答案 0 :(得分:3)

虽然T4本身没有专门用于访问数据库元数据的内置,但您可以使用任何现有的.NET API。特别是,如果您只需要使用SQL Server,则可以使用SMO(http://msdn.microsoft.com/en-us/library/ms162169.aspx),它设计得非常好并且易​​于使用。以下是一个示例:http://www.olegsych.com/2008/09/t4-tutorial-creatating-your-first-code-generator/

奥列格

答案 1 :(得分:1)

将T4视为带有服务器代码的ASPX文件。 HTML是直接呈现的,所有<% %>代码块都在运行时执行和评估。

这里的方法相同。当T4模板引擎执行模板时,将执行驻留在<# #>块内的所有代码。在这个块中,您可以执行任何框架。如果您愿意,可以打开数据库连接并读取数据并生成代码(就像您连接到数据库并从ASPX文件中的表数据生成HTML一样)。

所以你可以这样做(在你已经打开数据库阅读器之后):

...
public enum UserTypeFromDBLookupTable
{
    <# while(reader.Read()) { #>
    /// <summary><#= reader.Get("Description") #></summary>
    <#= reader.Get("Name") #> = <#= reader.Get("UserTypeID") #>,

    <# } #>
}
...

它将根据某些查找表(*)中的数据为您输出枚举。你可以看到这是非常强大和灵活的,因为你可以随心所欲地做任何事情。

评论(*)
代码示例不直接起作用,因为它简化为向您展示工作原理。例如,我省略了必须删除最后一个逗号的代码