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>

浙公网安备 33010602011771号