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、付费专栏及课程。

余额充值