CodeSmith生成实体类模板

来源:互联网 发布:民族性格知乎 编辑:程序博客网 时间:2024/04/30 15:31

模板:

<%-- Name:Author: BluceYoungDescription: 用于创建实体类--%><%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="True" Description="Create DataObject for DJ.Framework.DataAccess support." %><%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %><%@ Property Name="NameSpaceName" Type="System.String" Category="Options" Description="" %><%@ Property Name="ClassName" Type="System.String" Category="Options" Description="" %><%@ Property Name="Description" Type="System.String" Category="Options" Description="" %><%@ Property Name="CreateValidatorAttribute" Type="System.Boolean" Category="Options" Default="True" Description="Whether Create Validator Attribute." %><%@ Assembly Name="SchemaExplorer" %><%@ Assembly Name="System.Data" %><%@ Import Namespace="SchemaExplorer" %><%@ Import Namespace="System.Text" %><%@ Import Namespace="System.Collections.Specialized" %>using System;using System.Data;using <%=NameSpaceName %>.Commonnamespace <%= NameSpaceName %>.Model{<%-- 博客地址:blog.csdn.net/bluceyoung --%>    /// <summary>/// <%= Description %>/// </summary>public class <%= ClassName%> {        public String TableName{get{return "<%= SourceTable.Name %>";}}        <%--字段和属性  --%>        <% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>private <%=GetNullType(SourceTable.Columns[i].SystemType.Name) %> <%=GetFieldName(SourceTable.Columns[i].Name) %>;        /// <summary>/// <%= SourceTable.Columns[i].Description %>/// </summary>        public <%=GetNullType(SourceTable.Columns[i].SystemType.Name) %> <%=GetPropertyName(SourceTable.Columns[i].Name) %>        {            get{return <%=GetFieldName(SourceTable.Columns[i].Name) %>;}            set{this.<%=GetFieldName(SourceTable.Columns[i].Name) %> = value;}        }        <% } %>                <%--构造函数 --%>        public <%=ClassName %>()        {        }                /// <summary>        /// 使用reader实例化一个对象        /// </summary>        /// <param name="reader"></param>        public <%= ClassName %>(System.Data.SqlClient.SqlDataReader reader)        {            <% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>            if(reader["<%=SourceTable.Columns[i].Name %>"]!=DBNull.Value)                this.<%=GetFieldName(SourceTable.Columns[i].Name) %> = reader["<%=SourceTable.Columns[i].Name %>"].<%=GetTypeValue(SourceTable.Columns[i].DataType) %>;            <%} %>        }    }}<script runat="template">/// <summary>/// 获取能设置为null的数据类型/// </summary>/// <param name="typeName"></param>/// <returns></returns>private string GetNullType(string typeName){    if(typeName.Equals("String"))        return typeName;    else        return typeName+"?";}/// <summary>/// 根据列名获取字段名:_userName; 博客地址:blog.csdn.net/bluceyoung/// </summary>/// <param name="colName"></param>/// <returns></returns>private string GetFieldName(string colName){    return "_" + colName.ToCharArray()[0].ToString().ToLower()+colName.Substring(1);}/// <summary>/// 根据列名获取属性名:UserName/// </summary>/// <param name="colName"></param>/// <returns></returns>private string GetPropertyName(string colName){    return colName.ToCharArray()[0].ToString().ToUpper()+colName.Substring(1);}/// <summary>/// 获取类型转换后缀/// </summary>/// <param name="t"></param>/// <returns></returns>private string GetTypeValue(DbType t){    string str=string.Empty;    switch(t)    {        case DbType.AnsiString:        case DbType.String:str="ToString()";break;        case DbType.Boolean:str="ToString().ToBool()";break;        case DbType.Date:        case DbType.DateTime2:        case DbType.DateTime:str="ToString().ToDateTime()";break;        case DbType.Int32:str="ToString().ToInt()";break;        case DbType.Currency:        case DbType.Decimal:str="ToString().ToDecimal()";break;           case DbType.Double:str="ToString().ToDouble()";break;        case DbType.Int16:str="ToString().ToShort()";break;        case DbType.Int64:str="ToString().ToLong()";break;        default:str="";break;    }    return str;}</script>

用到的扩展类:

namespace BluceYoungPro.Common{    public static class ExtensionClass    {        /// <summary>        /// 转换成int,字符串格式不对抛出异常        /// </summary>        /// <param name="str"></param>        /// <returns></returns>        public static int ToInt(this String str)        {            return int.Parse(str);        }        /// <summary>        /// 转换成int,转换失败则返回设定好的默认值        /// </summary>        /// <param name="str"></param>        /// <param name="defaultValue">转换不成功返回的默认值</param>        /// <returns></returns>        public static int ToInt(this String str, int   defaultValue)        {            int value = 0;            if (int.TryParse(str, out value))            {                return value;            }            else            {                return defaultValue;            }        }        /// <summary>        /// 转换成字符串,为null时返回默认值,不抛异常。博客地址:blog.csdn.net/bluceyoung        /// </summary>        /// <param name="obj"></param>        /// <param name="defaultStr"></param>        /// <returns></returns>        public static string ToString(this object obj, string defaultStr)        {            if (obj == null)                return defaultStr;            else                return obj.ToString();        }                /// <summary>        /// 转换成DateTime,失败抛异常        /// </summary>        /// <param name="str"></param>        /// <returns><yi/returns>        public static DateTime ToDateTime(this String str)        {            return DateTime.Parse(str);        }        /// <summary>        /// 转换成Decimal类型,失败抛异常        /// </summary>        /// <param name="str"></param>        /// <returns></returns>        public static decimal ToDecimal(this String str)        {            return decimal.Parse(str);        }                /// <summary>        /// 转换成Decimal类型,失败返回默认值        /// </summary>        /// <param name="str"></param>        /// <param name="defaultValue"></param>        /// <returns></returns>        public static decimal ToDecimal(this String str, decimal defaultValue)        {            decimal value;            if (decimal.TryParse(str, out value))            {                return value;            }            else            {                return defaultValue;            }        }        /// <summary>        /// 转换成Double类型,失败抛异常        /// </summary>        /// <param name="str"></param>        /// <returns></returns>        public static double ToDouble(this String str)        {            return double.Parse(str);        }        /// <summary>        /// 转换成Double类型,失败返回默认值        /// </summary>        /// <param name="str"></param>        /// <param name="defaultValue"></param>        /// <returns></returns>        public static double ToDouble(this String str, double defaultValue)        {            double value;            if (double.TryParse(str, out value))            {                return value;            }            else            {                return defaultValue;            }        }        /// <summary>        /// 将指定字符串转换成bool值,"true","false","1","0",不区分大小写,其他抛出异常        /// </summary>        /// <param name="str"></param>        /// <returns></returns>        public static bool ToBool(this String str)        {            if (str.ToLower().Equals("true") || str.Equals("1"))                return true;            else if (str.ToLower().Equals("false") || str.Equals("0"))                return false;            else                throw new FormatException("无法识别参数的bool类型,可识别的有:true、false、1、0");        }    }}


原创粉丝点击