天天看點

動軟代碼生成V2.74模版簡介

  最近發現很多人用動軟代碼生成,确實友善,有些經驗記錄下,以後檢視回顧。

  ..\Maticsoft\Codematic2\Template\TemplateFile 為模闆檔案夾,直接在目錄下建立檔案夾【我的自定義模版】,有個【模版示例.cmt】也直接複制到自定義檔案下好了。在動軟模版管理代碼模闆右鍵重新整理就看見了,選擇模闆右鍵編輯并檢視進入模闆編輯。

<#@ template language="c#" HostSpecific="True" #>
<#@ output extension= ".cs" #>
<#
	TableHost host = (TableHost)(Host);
	host.Fieldlist.Sort(CodeCommon.CompareByintOrder);
#>      

語言是C#,輸出檔案是.cs,沒啥好說的。TableHost  host 就是目前的表資訊,主要使用字段集合,下面的代碼 host.Fieldlist 就是列的集合.Sort給集合排序。這裡要注意模版代碼的格式 <# #> 在這裡的代碼為模版識别的代碼,不在這裡的就是寫啥生成啥。

  基本文法知道了,下面我給出我的message生成代碼分析下,循環列按固定格式生成。

<# foreach (ColumnInfo c in host.Fieldlist)
		{ #>
private string _str<#= c.ColumnName.ToString().Split('_')[2] #>;// <#=  c.Description #>  
		<# } #>
		
		<# foreach (ColumnInfo c in host.Fieldlist)
		{ #>/// <summary>
		/// <#= c.Description == "" ? c.ColumnName : c.Description #>
        /// </summary>		
		public string str<#= c.ColumnName.ToString().Split('_')[2] #>
        {
            get{ return ((!string.IsNullOrEmpty(_str<#= c.ColumnName.ToString().Split('_')[2]#>)) ?_str<#= c.ColumnName.ToString().Split('_')[2]#>: ""); }
            set{ _str<#= c.ColumnName.ToString().Split('_')[2]#> = value; }
        }    
		 
		<# } #>      

支援語言是C# 當然有foreach 而 host.Fieldlist列集合的類型就是ColumnInfo 這裡定義c 要注意<# #>格式。c.ColumeName為列名稱可以.ToString()可以分組Split,c.Description為得到備注資訊及資料庫裡字段說明,這個很有用,省着自己看不明白。第二段有了個三元表達式 如果說明為空則輸出列名,注意标簽<#= #>這裡多個了= 表示輸出不是處理代碼。到最後注意 <# } #> 表示foreach的結束。關于.Split('_')[2]就是資料庫字段的設計了,不細說。<#=

host.GetModelClass(host.TableName) #>為輸出表名。還有的判斷用到了參數,設定個<#int i#>記錄換行,<#if(i==5){i=0;#>");<#="\n"#><#}#> 記錄和輸出換行。

  主要就是了解模闆輸出不在标簽裡的就是些啥輸出啥,我一般就是把寫好的代碼都粘到模闆裡然後哪是動态的改哪。關于直接生成三層架構,這個跟自己的代碼規範和資料庫設計有關沒有什麼通用的地方,就不說明了。