2012年3月29日星期四

动软代码生成器之【实体转换器】模版

动软代码生成器之【实体转换器】模版



相信使用动软代码生成器生成三层的人不在少数,三层中一个必不可少的功能就是把DataSet转换为实体,虽然动软提供的有现成的模版,但是仍然觉得不够强大。

于是自己写了一个模版用来生成实体转换器。代码如下:

<#@ template language="c#" HostSpecific="True" #><#@ output extension= ".cs" #><#	TableHost host = (TableHost)(Host);		string DbParaHead=host.DbParaHead;	string DbParaDbType=host.DbParaDbType;	string preParameter=host.preParameter;	string ModelSpace = "TJ.Model."+ host.GetModelClass(host.TableName);	ColumnInfo identityKey=host.IdentityKey;	string returnValue = "void";    if (identityKey!=null)    {                  returnValue = CodeCommon.DbTypeToCS(identityKey.TypeName);                  }#>public <#= ModelSpace #> ConvertTo<#= host.TableName#>(DataRow row){	<#= ModelSpace #> entity = null;	if(row != null)	{		entity = new <#= ModelSpace #>();		for (var i = 0; i < row.Table.Columns.Count; i++)		{			switch (row.Table.Columns[i].ColumnName.ToLower())			{<# foreach (ColumnInfo c in host.Fieldlist) { #>				case "<#=c.ColumnName.ToLower()#>" : entity.<#= c.ColumnName #> = Convert.<#=GetConvert(c)#>(row[i]);break;<#}#>			}		}	}	return entity;}<#+public string GetConvert(ColumnInfo c){	string str = String.Empty;	switch(CodeCommon.DbTypeToCS(c.TypeName))	{		case "int":str="ToInt32";break;		case "long":str="ToInt64";break;		case "float":str="ToDecimal";break;		case "DateTime":str="ToDateTime";break;		case "string":str="ToString";break;		case "bool":str="ToBoolean";break;	}	return str;}#>

  



TAG:动软代码生成器 模版 代码生成器