• 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>
    

      

  • 相关阅读:
    Python:Day02
    Python:Day01
    学习Python的第二天
    学习Python的第一天
    MySQL插入中文数据乱码问题
    MySQL数据库应用(11)DML之表和字段
    MySQL数据库应用(10)DML之修改表中的记录
    MySQL数据实战(初步增量恢复)
    MySQL数据库应用(9)DQL之select知识
    MySQL数据库应用(8)DML语句之insert知识
  • 原文地址:https://www.cnblogs.com/cdaq/p/6417374.html
Copyright © 2020-2023  润新知