CodeSmith(4)

上次我们说了怎样访问数据库,现在我们接下来说怎样根据访问的表写模板,首先:我们来看看他声明的SourceTable的属性:
SourceTable.Columns[i]:指的是数据库的第I列。
SourceTable.Columns[i].Name:第I列的字段名。
SourceTable.Columns[i].NativeType:第I列的字段类型。
SourceTable.Columns[i].Size:第I列字段的大小。
SourceTable.Columns.Count:表的行数。
SourceTable.Columns[i].Description:第I列的描述信息
根据以上,我们可以写出以下的模板了:
None.gif<%@ CodeTemplate Language="C#" TargetLanguage="T-SQL"
None.gif        Description
="Generates a update stored procedure." %>
None.gif
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema"
None.gif       Category
="Context"
None.gif        Description
="Table that the stored procedures should be based on." %>        
None.gif
<%@ Assembly Name="SchemaExplorer" %>
None.gif
<%@ Import Namespace="SchemaExplorer" %>
None.gif 
-----------------------------------------------------------------
None.gif 
-- Date Created: <%= DateTime.Now.ToLongDateString() %>
None.gif 
-- Created By:   guojiang
None.gif 
-----------------------------------------------------------------
None.gif
<script runat="template">
None.gif  
public string GetSqlParameterStatement(ColumnSchema column)
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif{
InBlock.gif       
string param =column.NativeType;
InBlock.gif  
InBlock.gif       
switch (column.DataType)
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif             
case DbType.Decimal:
ExpandedSubBlockStart.gifContractedSubBlock.gif             
dot.gif{
InBlock.gif                   param 
+= "(" + column.Precision + "" + column.Scale + ")";
InBlock.gif                   
break;
ExpandedSubBlockEnd.gif             }

InBlock.gif             
default:
ExpandedSubBlockStart.gifContractedSubBlock.gif             
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif                   
if (column.Size > 0)                   dot.gif{
InBlock.gif                        param 
+= "(" + column.Size + ")";
ExpandedSubBlockEnd.gif                   }

InBlock.gif                   
break;
ExpandedSubBlockEnd.gif             }

ExpandedSubBlockEnd.gif       }

InBlock.gif  
InBlock.gif       
return param;
ExpandedBlockEnd.gif }

None.gif 
</script>
ExpandedBlockStart.gifContractedBlock.gif 
<% for (int i = 0; i < SourceTable.Columns.Count; i++dot.gif%>
InBlock.gif
InBlock.gif
//<%=SourceTable.Columns[i].Description%> 
InBlock.gif
//类型 <%=GetSqlParameterStatement(SourceTable.Columns[i])%>
InBlock.gif
this.txt<%= SourceTable.Columns[i].Name %>.Text=model.<%= SourceTable.Columns[i].Name %>
ExpandedBlockEnd.gif      
<% }
 %>    
None.gif    
ExpandedBlockStart.gifContractedBlock.gif    
<% for (int i = 0; i < SourceTable.Columns.Count; i++dot.gif%>
InBlock.gif    
InBlock.gif
//<%=SourceTable.Columns[i].Description%> 
InBlock.gif
//类型 <%=GetSqlParameterStatement(SourceTable.Columns[i])%>
InBlock.gif
model.<%= SourceTable.Columns[i].Name %>=this.txt<%= SourceTable.Columns[i].Name %>.Text.Trim()
ExpandedBlockEnd.gif      
<% }
 %>    
None.gif
None.gif

运行之后的结果为:
None.gif-----------------------------------------------------------------
None.gif 
-- Date Created: 2007年4月25日
None.gif 
-- Created By:   guojiang
None.gif 
-----------------------------------------------------------------
None.gif
None.gif
//离职部门管理号 
None.gif
//类型 varchar(2)
None.gif
this.txtManageNo.Text=model.ManageNo
None.gif
None.gif
//一二级部门管理号 
None.gif
//类型 varchar(3)
None.gif
this.txtDeptCode.Text=model.DeptCode
None.gif
None.gif
//一二级部门名称 
None.gif
//类型 varchar(50)
None.gif
this.txtDeptName.Text=model.DeptName
None.gif
None.gif
// 
None.gif
//类型 datetime
None.gif
this.txtRecordCreateDate.Text=model.RecordCreateDate
None.gif
None.gif
// 
None.gif
//类型 varchar(32)
None.gif
this.txtRecordCreator.Text=model.RecordCreator
None.gif
None.gif
// 
None.gif
//类型 datetime
None.gif
this.txtRecordUpdateDate.Text=model.RecordUpdateDate
None.gif
None.gif
// 
None.gif
//类型 varchar(32)
None.gif
this.txtRecordUpdator.Text=model.RecordUpdator
None.gif    
None.gif    
None.gif
//离职部门管理号 
None.gif
//类型 varchar(2)
None.gif
model.ManageNo=this.txtManageNo.Text.Trim()
None.gif    
None.gif
//一二级部门管理号 
None.gif
//类型 varchar(3)
None.gif
model.DeptCode=this.txtDeptCode.Text.Trim()
None.gif    
None.gif
//一二级部门名称 
None.gif
//类型 varchar(50)
None.gif
model.DeptName=this.txtDeptName.Text.Trim()
None.gif    
None.gif
// 
None.gif
//类型 datetime
None.gif
model.RecordCreateDate=this.txtRecordCreateDate.Text.Trim()
None.gif    
None.gif
// 
None.gif
//类型 varchar(32)
None.gif
model.RecordCreator=this.txtRecordCreator.Text.Trim()
None.gif    
None.gif
// 
None.gif
//类型 datetime
None.gif
model.RecordUpdateDate=this.txtRecordUpdateDate.Text.Trim()
None.gif    
None.gif
// 
None.gif
//类型 varchar(32)
None.gif
model.RecordUpdator=this.txtRecordUpdator.Text.Trim()
None.gif
None.gif

转载于:https://www.cnblogs.com/gjahead/archive/2007/04/25/727378.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值