CodeSmith(1 生成实体)

1 一直想要写个模板,但是太懒了,最近做个项目,全部纯手写很是郁闷(老大规定了代码格式,在网上找不到现成的方式)

代码生成样子


#region 描述
//============================================================
//【创建】: 成东
//【创建时间】:2017-02-19 21:39:38:354
//【修改】:
//【修改时间】:
//【修改内容】:
//============================================================
#endregion
using System;
  namespace IOT3.SMS
  {
  
       	/// <summary>
		/// Users实体类
		/// </summary>	
       public class C_UsersModel
       {
           #region 属性、变量
               ///
              ///ID
              ///
              private int m_iD=0;
	          ///
              ///ID
              ///
              public int ID
              {
                 get{ return m_iD;}
                 set{ m_iD=value ;}
              }
               ///
              ///绕弯儿无
              ///
              private string m_serName=String.Empty;
	          ///
              ///绕弯儿无
              ///
              public string SerName
              {
                 get{ return m_serName;}
                 set{ m_serName=value ;}
              }
               ///
              ///企鹅无群翁
              ///
              private string m_pupwd=String.Empty;
	          ///
              ///企鹅无群翁
              ///
              public string Pupwd
              {
                 get{ return m_pupwd;}
                 set{ m_pupwd=value ;}
              }
           #endregion
           
           #region 构造函数
            ///
            ///构造函数
            ///
            public C_UsersModel()
            {
               
            }
           #endregion
       }
  }




 2 模板内容

<%@ Template Language="C#" TargetLanguage="C#"   Src=""  Inherits=""  Description=""%>
<%--添加程序集--%>
<%@ Assembly Name="SchemaExplorer" %>
<%--导入命名空间--%>
<%@ Import Namespace="SchemaExplorer" %>
<%--参数--%>
<%@ Property Name="ns" Default="IOT3.SMS" Type="System.String"  %>
<%@ Property Name="SoureTable"  Default="" Type="SchemaExplorer.TableSchema"%>
<% PrintHeader(); %>
using System;
<%--using System.Collections.Generic;
using System.Linq;
using System.Text;--%>
  namespace <%=ns%>
  {
  
       	/// <summary>
		/// <%=SoureTable.Name +"实体类"%>
		/// </summary>	
       public class <%=GenerderFileName()%>
       {
           <%= "#region 属性、变量"%>
           <%for(int i=0;i<SoureTable.Columns.Count;i++) {%>
               ///
              ///<%=SoureTable.Columns[i].Description == "" ? SoureTable.Columns[i].Name : SoureTable.Columns[i].Description %>
              ///
              <%=GetPrivateFields(SoureTable.Columns[i]) %>
	          ///
              ///<%=SoureTable.Columns[i].Description == "" ? SoureTable.Columns[i].Name : SoureTable.Columns[i].Description %>
              ///
              public <%=ConverDbTypeToCSharpType(SoureTable.Columns[i])%> <%= CoverToPasCal(SoureTable.Columns[i].Name)%>
              {
                 get{ return <%=GetMemerVariableName(SoureTable.Columns[i])%>;}
                 set{ <%=GetMemerVariableName(SoureTable.Columns[i])%>=value ;}
              }
           <% }%>
           <%="#endregion"%>
           
           <%= "#region 构造函数"%>
            ///
            ///构造函数
            ///
            public <%=GenerderFileName()%>()
            {
               
            }
           <%="#endregion"%>
       }
  }



<script runat="template">
 /// <summary>
 /// 第一个字母变大
 /// </summary>
 /// <param name="input"></param>
 /// <returns></returns>
public string CoverToPasCal(string input)
{
    return input[0].ToString().ToUpper()+input.Substring(1);
}
/// <summary>
/// 第一个字母变小
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public string CoverToPrivateCal(string input)
{
    
     return input[0].ToString().ToLower()+input.Substring(1);
}
/// <summary>
/// 将数据库中的类型变成C#类型
/// </summary>
/// <param name="column"></param>
/// <returns></returns>
public string ConverDbTypeToCSharpType(ColumnSchema column)
{
    
    if (column.Name.EndsWith("TypeCode")) return column.Name;
    switch (column.DataType)
	{
		case DbType.AnsiString: return "string";
		case DbType.AnsiStringFixedLength: return "string";
		case DbType.Binary: return "byte[]";
		case DbType.Boolean: return "bool";
		case DbType.Byte: return "byte";
		case DbType.Currency: return "decimal";
		case DbType.Date: return "DateTime";
		case DbType.DateTime: return "DateTime";
		case DbType.Decimal: return "decimal";
		case DbType.Double: return "double";
		case DbType.Guid: return "Guid";
		case DbType.Int16: return "short";
		case DbType.Int32: return "int";
		case DbType.Int64: return "long";
		case DbType.Object: return "object";
		case DbType.SByte: return "sbyte";
		case DbType.Single: return "float";
		case DbType.String: return "string";
		case DbType.StringFixedLength: return "string";
		case DbType.Time: return "TimeSpan";
		case DbType.UInt16: return "ushort";
		case DbType.UInt32: return "uint";
		case DbType.UInt64: return "ulong";
		case DbType.VarNumeric: return "decimal";
		default:
		{
			return "__UNKNOWN__" + column.NativeType;
		}
        
	}
    
    if(column.AllowDBNull&& column.SystemType.IsValueType)
    {
        return "?";
    }
   
}
    /// <summary>
    /// 头信息
    /// </summary>
public void PrintHeader()
	{
        Response.WriteLine("#region 描述");
		Response.WriteLine("//============================================================");
		Response.WriteLine("//【创建】: 成东");
        Response.WriteLine("//【创建时间】:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
        Response.WriteLine("//【修改】:");
        Response.WriteLine("//【修改时间】:");
        Response.WriteLine("//【修改内容】:");
		Response.WriteLine("//============================================================");
        Response.WriteLine("#endregion");
		//Response.WriteLine();
	}
/// <summary>
/// 成员变量
/// </summary>
/// <param name="column"></param>
/// <returns></returns>
 public string  GetMemerVariableName(ColumnSchema column)
    {
        string propertName=column.Name;
        
         string memberVariableName = "m_" + CoverToPrivateCal(propertName); 
        
         return memberVariableName;
    }
    
    /// <summary>
    /// 私有字段
    /// </summary>
    /// <param name="column"></param>
    /// <returns></returns>
public string GetPrivateFields(ColumnSchema column)
    {
       
     
        string statement = "private "+ ConverDbTypeToCSharpType(column) + " " + GetMemerVariableName(column)+"=";
        
        statement+=GetMemberVariableDefaultValue(column)+";";
        
        
        //后面要添加默认值 todo
        return statement;
    }
    
    /// <summary>
    /// 生成文件名字
    /// </summary>
    /// <param name="column"></param>
    /// <returns></returns>
    public string GenerderFileName()
    {
        
        return "C_"+CoverToPasCal(SoureTable.Name)+"Model";
    }
    //根据变量类型获得默认值
public string GetMemberVariableDefaultValue(ColumnSchema column)
{    
    
	switch (column.DataType)
	{
		case DbType.AnsiString: return "String.Empty";
		case DbType.AnsiStringFixedLength: return "String.Empty";
		case DbType.Binary: return " new byte[]";
		case DbType.Boolean: return "false";
		case DbType.Byte: return "0";
		case DbType.Currency: return "0";
		case DbType.Date: return "DateTime.Now";
		case DbType.DateTime: return "DateTime.Now";
		case DbType.Decimal: return "0";
		case DbType.Double: return "0";
		case DbType.Guid: return "new Guid()";
		case DbType.Int16: return "0";
		case DbType.Int32: return "0";
		case DbType.Int64: return "0";
		case DbType.Object: return " ";
		case DbType.SByte: return "0";
		case DbType.Single: return "0";
		case DbType.String: return @"String.Empty";
		case DbType.StringFixedLength: return "String.Empty";
		//case DbType.Time: return "TimeSpan";
		case DbType.UInt16: return "0";
		case DbType.UInt32: return "0";
		case DbType.UInt64: return "0";
		case DbType.VarNumeric: return "0";
	}
    return "";
}
    
</script>

  

原文地址:https://www.cnblogs.com/cdaq/p/6417374.html