CodeSmith 创建Ado.Net自定义模版(二)
建立第二个C# Template: Step2_Model.cst(实体类模版)
代码:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="实体类" %>
<%@ Property Name="NameSpace" Type="System.String" Default="Model" Category="Property" Description="命名空间" %>
<%@ Property Name="Author" Type="System.String" Default="Wilson" Category="Property" Description="作者名" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Optional="True" Category="db" Description="表映射文件" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<script runat="template">
/// <summary>
///把数据库类型转化为C#类型
/// </summary>
public string DataType2CSharpType(System.Data.DbType dbType)
{
switch (dbType)
{
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.DateTime2:
return "DateTime";
case DbType.DateTimeOffset:
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 "DateTime";
case DbType.UInt16:
return "ushort";
case DbType.UInt32:
return "uint";
case DbType.UInt64:
return "ulong";
case DbType.VarNumeric:
return "decimal";
case DbType.Xml:
return "string";
default:
return "object";
}
}
</script>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace <%=NameSpace%>
{
/// <summary>
/// 功能: 实体类 (<%=SourceTable.Description%>)
/// 创建人:<%=Author%>
/// 创建日期:<%=DateTime.Now.ToShortDateString() %>
/// </summary>
[Serializable]
public class <%=SourceTable.Name%>
{
public <%=SourceTable.Name%>()
{
}
#region##<%=SourceTable.Name%>实体
<%for(int i = 0;i < SourceTable.Columns.Count;i++)%>
<%{%>
/// <summary>
/// <%=SourceTable.Columns[i].Description%>
/// </summary>
public <%=DataType2CSharpType(SourceTable.Columns[i].DataType)%> <%=SourceTable.Columns[i].Name%> {get; set;}
<%}%>
#endregion
}
}
DataType2CSharpType方法是把数据库的类型转化为C#类型。。。
很简单,几个标签己经在CodeSmith 创建Ado.Net自定义模版(一)中做过介绍
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Optional="True" Category="db" Description="表映射文件" %>
有这句话,在属性栏中可以看到db大目录下,SourceTable属性,属性框中有个按钮,点击,会弹出选择数据库的窗口
或者先在工具的Scheme Explorer工具栏中,点击ManagerDataSource,添加一个数据库进来。。
这样你就可以选择数据库表
<%=SourceTable.Name%> :这是你选择的表名
<%=SourceTable.Description%> :这是你数据库中对表的描述
SourceTable.Columns.Count :这是数据库中的列总数
SourceTable.Columns[i].DataType :是索引为i的列类型
SourceTable.Columns[i].Name : 是索引用i的列名
PS:CodeSmith Studio中有智能提示,其它属性,大家可以自己试试
示例下载地址:下载