自己写了一个简单的CodeSmith 模板,本来是自己在做开发的时候用的,现在放出来希望对广大的.net 初学者有一点点用。
1. 实体层(MOD)
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" ResponseEncoding="UTF-8" Description="Template description here." %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="表对象" %>
<%@ Property Name="Author" Type="System.String" Default="创捷科技" Category="Context" Description=""%>
<%@ Property Name="NameSpace" Type="String" Default="" Category="Context" Description="模型层命名空间名"%>
<%@ Property Name="ModelName" Type="String" Default="" Category="Context" Description="模块名称"%>
/*
=============================================================================
Copyright ( C ),1988-1999,StrongJet Tech . Co .,Ltd
File name:
Author:<%=Author%>
CreatedTime:<%=DateTime.Now.ToShortDateString()%>
Description:<%=SourceTable.Name%>
=============================================================================
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace <%=NameSpace%>.<%=ModelName%>
{
/// <summary>
///
/// </summary>
public class <%=SourceTable.Name%>_MOD
{
<%for(int i=0;i<SourceTable.Columns.Count;i++)%>
<%{%>
private <%=SourceTable.Columns[i].SystemType.Name%> _<%=SourceTable.Columns[i].Name%>;
<%}%>
<%for(int i=0;i<SourceTable.Columns.Count;i++)%>
<%{%>
///<summary>
///<%=SourceTable.Columns[i].Description%>
///<summary>
public <%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.Columns[i].Name%>
{
get { return this._<%=SourceTable.Columns[i].Name%>;}
set { this._<%=SourceTable.Columns[i].Name%> = value;}
}
<%}%>
}
}
2、业务逻辑层(BLL)
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" ResponseEncoding="UTF-8" Description="Template description here." %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="表对象" %>
<%@ Property Name="Author" Type="System.String" Default="创捷科技" Category="Context" Description=""%>
<%@ Property Name="NameSpace" Type="String" Default="" Category="Context" Description="模型层命名空间名"%>
<%@ Property Name="ModelName" Type="String" Default="DAL" Category="Context" Description="模块名称"%>
/*
=============================================================================
Copyright ( C ),1988-1999,StrongJet Tech . Co .,Ltd
File name:
Author:<%=Author%>
CreatedTime:<%=DateTime.Now.ToShortDateString()%>
Description:<%=SourceTable.Name%>
=============================================================================
*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using <%=NameSpace%>.MOD;
using <%=NameSpace%>.DAL;
namespace <%=NameSpace%>
{
public class <%=SourceTable.Name%>_BLL
{
<%=SourceTable.Name%>_DAL dal = new <%=SourceTable.Name%>_DAL();
public <%=SourceTable.Name%>_BLL(){}
private static <%=SourceTable.Name%>_BLL _Instance=null;
public static <%=SourceTable.Name%>_BLL Instance
{
if(_Instance==null)
{
_Instance = new <%=SourceTable.Name%>_BLL();
}
return _Instance;
}
///<summary>
///插入一条新记录
///<summary>
public int Insert(<%=SourceTable.Name%>_MOD mod)
{
return dal.Insert(mod);
}
///<summary>
///删除一条记录
///<summary>
public int Delete(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
{
return dal.Delete(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>);
}
///<summary>
//修改一条记录
///<summary>
public int Update(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
{
return dal.Update(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>);
}
///<summary>
///查询记录,返回DataSet
///<summary>
public DataSet Select()
{
return dal.Select();
}
///<summary>
///查询记录,返回DataSet
///<summary>
public DataSet Select(String where)
{
return dal.Select(where);
}
///<summary>
///查询记录,返回一个实体
///<summary>
public <%=SourceTable.Name%>_MOD SelectMod(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
{
return dal.SelectMod(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
}
///<summary>
///查询记录,返回一个List集合
///<summary>
public List<<%=SourceTable.Name%>_MOD> SelectList()
{
return dal.SelectList();
}
///<summary>
///查询记录,返回一个List集合
///<summary>
public List<<%=SourceTable.Name%>_MOD> SelectList(String where)
{
return dal.SelectList(where);
}
}
}
3、数据访问层(DAL)
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" ResponseEncoding="UTF-8" Description="Template description here." %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="表对象" %>
<%@ Property Name="Author" Type="System.String" Default="创捷科技" Category="Context" Description=""%>
<%@ Property Name="NameSpace" Type="String" Default="" Category="Context" Description="模型层命名空间名"%>
<%@ Property Name="ModelName" Type="String" Default="DAL" Category="Context" Description="模块名称"%>
/*
=============================================================================
Copyright ( C ),1988-1999,StrongJet Tech . Co .,Ltd
File name:
Author:<%=Author%>
CreatedTime:<%=DateTime.Now.ToShortDateString()%>
Description:<%=SourceTable.Name%>
=============================================================================
*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using <%=NameSpace%>.MOD;
namespace <%=NameSpace%>.<%=ModelName%>
{
/// <summary>
///
/// </summary>
public class <%=SourceTable.Name%>_DAL
{
SqlHelper SqlHelper = new SqlHelper();
public <%=SourceTable.Name%>_DAL()
{
//构造函数
//Do Code
}
private string SelectSQL=string.Format(@" select <%for(int i=0;i<SourceTable.Columns.Count;i++)%><%{%><%if(i==0)%><%{%><%=SourceTable.Columns[i].Name.Trim()%><%}%><%else%><%{%>,<%=SourceTable.Columns[i].Name.Trim()%><%}%><%}%> from <%=SourceTable.Name%> where 1=1 ");
private string InsertSQL=string.Format(@" insert into <%=SourceTable.Name%> (<%for(int i=0;i<SourceTable.Columns.Count;i++)%><%{%><%if(i==0)%><%{%><%=SourceTable.Columns[i].Name.Trim()%><%}%><%else%><%{%>,<%=SourceTable.Columns[i].Name.Trim()%><%}%><%}%> ) values (<%for(int i=0;i<SourceTable.Columns.Count;i++)%><%{%><%if(i==0)%><%{%>@<%=SourceTable.Columns[i].Name.Trim()%><%}%><%else%><%{%>,@<%=SourceTable.Columns[i].Name.Trim()%><%}%><%}%> )");
private string UpdateSQL=string.Format(@" Update <%=SourceTable.Name%> set <%for(int i=0;i<SourceTable.Columns.Count;i++)%><%{%><%if(i==0)%><%{%><%=SourceTable.Columns[i].Name.Trim()%>=@<%=SourceTable.Columns[i].Name.Trim()%><%}%><%else%><%{%>,<%=SourceTable.Columns[i].Name.Trim()%>=@<%=SourceTable.Columns[i].Name.Trim()%><%}%><%}%> where <%=SourceTable.PrimaryKey.MemberColumns[0].Name.ToString()%>=@<%=SourceTable.PrimaryKey.MemberColumns[0].Name.ToString()%>");
private string DeleteSQL=string.Format(@" Delete from <%=SourceTable.Name%> where <%=SourceTable.PrimaryKey.MemberColumns[0].Name.ToString()%>=@<%=SourceTable.PrimaryKey.MemberColumns[0].Name.ToString()%>");
///<summary>
///返回parameters对象
///<summary>
public SqlParameter[] SqlParameters(<%=SourceTable.Name%>_MOD mod)
{
SqlParameter[] parameters =new SqlParameter[]
{
<% for(int i=0;i<SourceTable.Columns.Count;i++)%>
<%{%>
<%if(i!=SourceTable.Columns.Count-1)%>
<%{%>
new SqlParameter("@<%=SourceTable.Columns[i].Name.Trim()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>),
<%}%>
<%else%>
<%{%>
new SqlParameter("@<%=SourceTable.Columns[i].Name.Trim()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>)
<%}%>
<%}%>
};
<% for(int i=0;i<SourceTable.Columns.Count;i++)%>
<%{%>
<%if(i!=SourceTable.Columns.Count)%>
<%{%>
parameters[<%=i%>].Value = mod.<%=SourceTable.Columns[i].Name.Trim()%>;
<%}%>
<%}%>
return parameters;
}
///<summary>
///给实体赋值
///<summary>
public <%=SourceTable.Name%>_MOD BindValueToObject(DataTable dt)
{
<%=SourceTable.Name%>_MOD mod = new <%=SourceTable.Name%>_MOD();
if(dt.Rows.Count>0)
{
for(int i=0;i<dt.Rows.Count;i++)
{
Type t = mod.GetType();
PropertyInfo[] prop = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo p in prop)
{
string ModName = p.Name;
for (int j = 0; j < dt.Columns.Count; j++)
{
if (ModName == dt.Columns[j].ColumnName.ToString())
{
p.SetValue(mod, Convert.ChangeType(dt.Rows[i][""+dt.Columns[j].ColumnName.ToString()+""].ToString(), p.PropertyType), null);
}
}
}
}
}
return mod;
}
///<summary>
///查询记录,返回一个List集合
///<summary>
public List<<%=SourceTable.Name%>_MOD> GetList(DataTable dt)
{
List<<%=SourceTable.Name%>_MOD> List_Mod = new List<<%=SourceTable.Name%>_MOD>();
if(dt.Rows.Count>0)
{
for(int i=0;i<dt.Rows.Count;i++)
{
<%=SourceTable.Name%>_MOD mod = new <%=SourceTable.Name%>_MOD();
Type t = mod.GetType();
PropertyInfo[] prop = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo p in prop)
{
string ModName = p.Name;
for (int j = 0; j < dt.Columns.Count; j++)
{
if (ModName == dt.Columns[j].ColumnName.ToString())
{
p.SetValue(mod, Convert.ChangeType(dt.Rows[i][""+dt.Columns[j].ColumnName.ToString()+""].ToString(), p.PropertyType), null);
}
}
}
List_Mod.Add(mod);
}
}
return List_Mod;
}
///<summary>
///插入一条新记录
///<summary>
public int Insert(<%=SourceTable.Name%>_MOD mod)
{
return SqlHelper.SqlHelper.RunCmdSql(InsertSQL,SqlParameters(mod));
}
///<summary>
///删除一条记录
///<summary>
public int Delete(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
{
SqlParameter[] parameters =new SqlParameter[]
{
<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
<%if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1)%>
<%{%>
new SqlParameter("@<%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>),
<%}%>
<%else%>
<%{%>
new SqlParameter("@<%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>)
<%}%>
<%}%>
};
<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
parameters[<%=i%>].Value = <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>;
<%}%>
return SqlHelper.SqlHelper.RunCmdSql(DeleteSQL,parameters);
}
///<summary>
///修改一条记录
///<summary>
public int Update(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
{
SqlParameter[] parameters =new SqlParameter[]
{
<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
<%if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1)%>
<%{%>
new SqlParameter("@<%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>),
<%}%>
<%else%>
<%{%>
new SqlParameter("@<%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>)
<%}%>
<%}%>
};
<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
parameters[<%=i%>].Value = <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>;
<%}%>
return SqlHelper.SqlHelper.RunCmdSql(DeleteSQL,parameters);
}
///<summary>
///查询记录,返回DataSet
///<summary>
public DataSet Select()
{
DataSet ds = SqlHelper.SqlHelper.ConnToDataSet(SelectSQL);
return ds;
}
///<summary>
///查询记录,返回DataSet
///<summary>
public DataSet Select(String where)
{
SelectSQL+=where;
DataSet ds = SqlHelper.SqlHelper.ConnToDataSet(SelectSQL);
return ds;
}
///<summary>
///查询记录,返回一个实体
///<summary>
public <%=SourceTable.Name%>_MOD SelectMod(<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1){%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>,<%}else{%><%=SourceTable.Columns[i].SystemType.Name%> <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%><%}}%>)
{
SqlParameter[] parameters =new SqlParameter[]
{
<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
<%if(i!=SourceTable.PrimaryKey.MemberColumns.Count-1)%>
<%{%>
new SqlParameter("@<%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>),
<%}%>
<%else%>
<%{%>
new SqlParameter("@<%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>",SqlDbType.<%=ChangeSqlDbTypeName(SourceTable.Columns[i])%>)
<%}%>
<%}%>
};
<%for(int i=0;i<SourceTable.PrimaryKey.MemberColumns.Count;i++){%>
parameters[<%=i%>].Value = <%=SourceTable.PrimaryKey.MemberColumns[i].Name.ToString()%>;
<%}%>
DataSet ds = SqlHelper.SqlHelper.ExeSqlDataSet(SelectSQL,parameters);
return BindValueToObject(ds.Tables[0]);
}
///<summary>
///查询记录,返回一个List集合
///<summary>
public List<<%=SourceTable.Name%>_MOD> SelectList()
{
DataSet ds = SqlHelper.SqlHelper.ConnToDataSet(SelectSQL);
return GetList(ds.Tables[0]);
}
///<summary>
///查询记录,返回一个List集合
///<summary>
public List<<%=SourceTable.Name%>_MOD> SelectList(String where)
{
SelectSQL+=where;
DataSet ds = SqlHelper.SqlHelper.ConnToDataSet(SelectSQL);
return GetList(ds.Tables[0]);
}
}
}
<script runat="template">
public string ChangeSqlDbTypeName(ColumnSchema Column)
{
string _SqlDbTypeName=Column.NativeType;
switch (Column.NativeType)
{
case "char":
{
_SqlDbTypeName="Char";
break;
}
case "datetime":
{
_SqlDbTypeName="DateTime";
break;
}
case "varchar":
{
_SqlDbTypeName="VarChar";
break;
}
case "smallint":
case "tinyint":
{
_SqlDbTypeName="Int";
break;
}
}
return _SqlDbTypeName;
}
</script>