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"); } }}
- CodeSmith生成实体类模板
- codesmith 自动生成实体类的模板
- CodeSmith模板(生成实体类)
- CodeSmith自动生成业务实体类的模板代码
- CodeSmith生成数据表实体类
- CodeSmith生成数据库视图实体类
- 使用CodeSmith生成数据实体类
- 二.codesmith 生成 hibernate 中的实体类
- CodeSmith模板生成
- CodeSmith模板生成
- 用CodeSmith生成数据库实体类的代码
- 用CodeSmith生成自定义模板
- 用CodeSmith生成自定义模板
- CodeSmith自动生成实体类文件(数据库中所有表的实体类)!
- CodeSmith----02.生成数据库表对应实体
- 利用CodeSmith将数据表生成实体类以及po的操作
- T4生成数据库实体类模板
- 使用T4模板生成 数据库实体类
- 循环队列
- 模拟相位解调
- linux中断流程详解
- 很容易的制作双色表格
- java 反射例子
- CodeSmith生成实体类模板
- Java对象的序列化
- ACM题几个错误原因(持续更新)
- socket 、webservices、Json的区别
- 360黑匣子之谜——奇虎360“癌”性基因大揭秘
- dll的弱引用和强引用
- 算法 shell排序法 - 改良的插入排序
- 使思维导图的清晰度更高
- 华为的技术超越之路:研发费用逼近爱立信