VS 2005 模式:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Template description here." %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
using System;
using System.Collections.Generic;
using System.Text;
namespace MODEL
{
[Serializable]
public class <%=GetClassName(SourceTable)%>
{
<% foreach (ColumnSchema column in SourceTable.Columns) {%>
<% if (column.IsForeignKeyMember) {%>
private <%=GetPascalName(GetForeignKeyColumnType(column))%> <%=GetCamelName(GetForeignKeyColumnName(column))%> = new <%=GetPascalName(GetForeignKeyColumnType(column))%>();
<% }else{%>
private <%=GetCSharpVariableType(column)%> <%=GetCamelName(column)%>;
<% }%>
<% }%>
<% foreach (ColumnSchema column in SourceTable.Columns) {%>
<% if (column.IsForeignKeyMember){ %>
/// <summary>
/// <%=column.Description %>
/// </summary>
public <%=GetPascalName(GetForeignKeyColumnType(column)) %> <%=GetPascalName(GetForeignKeyColumnName(column))%>
{
get { return <%=GetCamelName(GetForeignKeyColumnName(column)) %>; }
set { <%=GetCamelName(GetForeignKeyColumnName(column)) %> = value; }
}
<% } else {%>
/// <summary>
/// <%=column.Description %>
/// </summary>
public <%=GetCSharpVariableType(column) %> <%=GetPascalName(column) %>
{
get { return <%= GetCamelName(column) %>; }
set { <%= GetCamelName(column) %> = value; }
}
<% }%>
<% }%>
}
}
<script runat="template">
public string MakeSingle(string name)
{
return name;
}
public string GetCamelName(ColumnSchema column)
{
return column.Name.Substring(0, 1).ToLower() + column.Name.Substring(1);
}
public string GetCamelName(string value)
{
return value.Substring(0, 1).ToLower() + value.Substring(1);
}
public string GetPascalName(ColumnSchema column)
{
return column.Name.Substring(0, 1).ToUpper() + column.Name.Substring(1);
}
public string GetPascalName(string value)
{
return value.Substring(0, 1).ToUpper() + value.Substring(1);
}
public string GetClassName(TableSchema table)
{
return GetPascalName(MakeSingle(table.Name));
}
public string GetForeignKeyColumnType(ColumnSchema column)
{
return column.Table.ForeignKeys[0].PrimaryKeyTable.Name;
}
public string GetForeignKeyColumnName(ColumnSchema column)
{
if(column.Name.Substring(column.Name.Length-2).ToLower() == "id")
{
return column.Name.Substring(0,column.Name.Length-2);
}
else
{
return column.Name;
}
}
public string GetStructureParameter()
{//int id,string name
string temp = "";
foreach(ColumnSchema column in SourceTable.NonPrimaryKeyColumns)
{
if(column.IsForeignKeyMember)
{
temp += GetPascalName(GetForeignKeyColumnType(column)) + " " +GetCamelName(GetForeignKeyColumnName(column)) + ",";
}
else
{
temp += GetCSharpVariableType(column) + " " + GetCamelName(column) + ",";
}
}
return temp.Substring(0,temp.Length-1);
}
public string GetPrimaryKeyType(TableSchema table)
{
if (table.PrimaryKey != null)
{
if (table.PrimaryKey.MemberColumns.Count == 1)
{
return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]);
}
else
{
throw new ApplicationException("This template will not work on primary keys with more than one member column.");
}
}
else
{
throw new ApplicationException("This template will only work on tables with a primary key.");
}
}
public string GetCSharpVariableType(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;
}
}
}
public override string GetFileName()
{
return GetClassName(SourceTable) + ".cs";
}
</script>
VS 2008 模式:
<%@ 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
}
}