CodeSmith快速入门之三:数据库我来也

在【CodeSmith快速入门之一:初次接触CodeSmith】和【CodeSmith快速入门之二:输入参数和方法】中,我们介绍了CodeSmith最基本的使用,
但是代码生成器最主要的功能就是根据数据库中的表,产生相应层次中的代码。
那么在模板中怎么访问数据库呢,本次我将对你一一道来

在NET中,访问数据库的组件是ADO.NET,而在CodeSmith中有没有相应的组件呢?
当然,这就是SchemaExplorer
SchemaExplorer中常用的对象
--DatabaseSchema:数据库
--TableSchema:表
--ColumnSchema:列
--ViewSchema:视图
--……

那么接下来带大家实现获得某个表中所有列的信息。

1、新建C#模板,去掉原始内容并保存取名为“TableInfo.cst”

2、添加模板声明以及输入参数

<% @ CodeTemplate Language = " C# "  TargetLanguage = " Text " ResponseEncoding="UTF-8"   Description = " 获得某个表的所以列 " %>
<% Property  Name = " SourceTable "  Type = " SchemaExplorer.TableSchema "  Category = " 内容 "  Description = " 数据源表 "   %>
TargetLanguage:目标语言,指生成后的方式,如:C#、T-SQL等。

Type数据类型为SchemaExplorer.TableSchema,表明参数SourceTable是一个表对象。

点击编译后,发生了错误
 

这不就是NET中没有引用和导入组件的意思吗,那么CodeSmith中怎么做呢?

3、引用和导入SchemaExplorer组件

<% @ CodeTemplate Language = " C# "  TargetLanguage = " Text ResponseEncoding="UTF-8"  Description = " 获得某个表的所以列 " %>
<% Property  Name = " SourceTable "  Type = " SchemaExplorer.TableSchema "  Category = " 内容 "  Description = " 数据源表 "   %>
<% @ Assembly Name = " SchemaExplorer "   %>
<% @ Import Namespace = " SchemaExplorer "   %>

<%@ Assembly Name="组件名"%>:引用组件,等同于程序中的添加引用
<%@ Import Namespace="组件名"%>:导入组件,等同于程序中的using

4、编写【根据表获得所有列信息】的方法

< script  runat ="template" >
    public 
void  PrintColumnsByTable(TableSchema table)
    {
        foreach(ColumnSchema col 
in  table.Columns)
        {
            Response.WriteLine(col.Name);
        }
    }
</ script >

用ColumnSchema(列)对象遍历传入的表中的所有列,输出列名

5、编写输出代码

<% @ CodeTemplate Language = " C# "  TargetLanguage = " Text ResponseEncoding="UTF-8"  Description = " 获得某个表的所以列 " %>
<% Property  Name = " SourceTable "  Type = " SchemaExplorer.TableSchema "  Category = " 内容 "  Description = " 数据源表 "   %>
<% @ Assembly Name = " SchemaExplorer "   %>
<% @ Import Namespace = " SchemaExplorer "   %>

您所选择的表为:
<% = SourceTable.Name %>
表中包含以下列:
<%  PrintColumnsByTable(SourceTable);  %>

< script  runat ="template" >
    public 
void  PrintColumnsByTable(TableSchema table)
    {
        foreach(ColumnSchema col 
in  table.Columns)
        {
            Response.WriteLine(col.Name);
        }
    }
</ script >

 

6、设置表对象
CodeSmith快速入门之三:数据库我来也_第1张图片

CodeSmith快速入门之三:数据库我来也_第2张图片

CodeSmith快速入门之三:数据库我来也_第3张图片

CodeSmith快速入门之三:数据库我来也_第4张图片

CodeSmith快速入门之三:数据库我来也_第5张图片

CodeSmith快速入门之三:数据库我来也_第6张图片

CodeSmith快速入门之三:数据库我来也_第7张图片
最后,我们选择了EmployeeInfo表

10、运行,查看结果
您所选择的表为:EmployeeInfo
表中包含以下列:
EmpID
LoginID
Password
Role
EmpName

呵呵,怎么样,我们成功获得了选中表中的列信息。
在下一次,我将告诉大家来编写【模型层】的模板,谢谢!

请关注:【CodeSmith快速入门之四:模型层的生成

 


返回目录【CodeSmith快速入门系列



 

你可能感兴趣的:(code)