使用T4模板,它是否会将数据库作为一个可以吐出代码的对象?
或者你需要那个工具visualt4吗?
答案 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") #>,
<# } #>
}
...
它将根据某些查找表(*)中的数据为您输出枚举。你可以看到这是非常强大和灵活的,因为你可以随心所欲地做任何事情。
评论(*)
代码示例不直接起作用,因为它简化为向您展示工作原理。例如,我省略了必须删除最后一个逗号的代码