CodeSmith 教程

上次我們說了怎樣訪問數據庫,現在我們接下來說怎樣根據訪問的表寫模板,首先:我們來看看他聲明的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列的描述信息
根據以上,我們可以寫出以下的模板了:
<%@ CodeTemplate Language="C#" TargetLanguage="T-SQL"
        Description
="Generates a update stored procedure." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema"
       Category
="Context"
        Description
="Table that the stored procedures should be based on." %>        
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
 
-----------------------------------------------------------------
 
-- Date Created: <%= DateTime.Now.ToLongDateString() %>
 
-- Created By:   guojiang
 
-----------------------------------------------------------------
<script runat="template">
  
public string GetSqlParameterStatement(ColumnSchema column)
 
{
       
string param =column.NativeType;
  
       
switch (column.DataType)
       
{
             
case DbType.Decimal:
             
{
                   param 
+= "(" + column.Precision + "" + column.Scale + ")";
                   
break;
             }

             
default:
             
{
                   
if (column.Size > 0)                   {
                        param 
+= "(" + column.Size + ")";
                   }

                   
break;
             }

       }

  
       
return param;
 }

 
</script>
 
<% for (int i = 0; i < SourceTable.Columns.Count; i++%>

//<%=SourceTable.Columns[i].Description%> 
//類型 <%=GetSqlParameterStatement(SourceTable.Columns[i])%>
this.txt<%= SourceTable.Columns[i].Name %>.Text=model.<%= SourceTable.Columns[i].Name %>
      
<% }
 %>    
    
    
<% for (int i = 0; i < SourceTable.Columns.Count; i++%>
    
//<%=SourceTable.Columns[i].Description%> 
//類型 <%=GetSqlParameterStatement(SourceTable.Columns[i])%>
model.<%= SourceTable.Columns[i].Name %>=this.txt<%= SourceTable.Columns[i].Name %>.Text.Trim()
      
<% }
 %>    


運行之後的結果爲:
-----------------------------------------------------------------
 
-- Date Created: 2007年4月25日
 
-- Created By:   guojiang
 
-----------------------------------------------------------------

//離職部門管理號 
//類型 varchar(2)
this.txtManageNo.Text=model.ManageNo

//一二級部門管理號 
//類型 varchar(3)
this.txtDeptCode.Text=model.DeptCode

//一二級部門名稱 
//類型 varchar(50)
this.txtDeptName.Text=model.DeptName

// 
//類型 datetime
this.txtRecordCreateDate.Text=model.RecordCreateDate

// 
//類型 varchar(32)
this.txtRecordCreator.Text=model.RecordCreator

// 
//類型 datetime
this.txtRecordUpdateDate.Text=model.RecordUpdateDate

// 
//類型 varchar(32)
this.txtRecordUpdator.Text=model.RecordUpdator
    
    
//離職部門管理號 
//類型 varchar(2)
model.ManageNo=this.txtManageNo.Text.Trim()
    
//一二級部門管理號 
//類型 varchar(3)
model.DeptCode=this.txtDeptCode.Text.Trim()
    
//一二級部門名稱 
//類型 varchar(50)
model.DeptName=this.txtDeptName.Text.Trim()
    
// 
//類型 datetime
model.RecordCreateDate=this.txtRecordCreateDate.Text.Trim()
    
// 
//類型 varchar(32)
model.RecordCreator=this.txtRecordCreator.Text.Trim()
    
// 
//類型 datetime
model.RecordUpdateDate=this.txtRecordUpdateDate.Text.Trim()
    
// 
//類型 varchar(32)
model.RecordUpdator=this.txtRecordUpdator.Text.Trim()

更多,請訪問:::
http://www.cnblogs.com/gjahead/archive/2007/04/25/727378.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章