模板:
<%--
Name:
Author: BluceYoung
Description: 用于创建实体类
--%>
<%@ 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 %>.Common
namespace <%= 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");
}
}
}