codesmith 实体类,数据操作类 <%-- Name:ddAuthor:binbin Description: booksir --%> <% @ CodeTemplate Language = " C# " TargetLanguage = " Text " Src = "" Inherits = "" Debug = " False " Description = " Template description here. " %> <% @ Assembly Name = " SchemaExplorer " %> <% @ Import Namespace = " SchemaExplorer " %> <% @ Assembly Name = " System.Data " %> <% @ Import Namespace = " System.Data " %> <% @ Property Name = " SourceTable " Type = " SchemaExplorer.TableSchema " Category = " Context " Description = " 选择一个表 " %> <% @ Property Name = " NameSpace " Type = " System.String " Default = " SomeValue " Optional = " True " Category = " Strings " Description = " 程序的命名空间 " %> /**/ /*代码自动生成工具 codesmith Author: lovebanyi 风云*/ using System; using System.Web; using System.Data; namespace <%= NameSpace %> { public class <%=OneToUpper(SourceTable.Name)%>Info { <%for(int i=0;i<SourceTable.Columns.Count;i++){%> private <%=GetCSharpVariableType(SourceTable.Columns[i])%> <%=OneToLower(SourceTable.Columns[i].Name)%>_; <%}%> public <%=OneToUpper(SourceTable.Name)%>Info(<%for(int i=0;i<SourceTable.Columns.Count;i++){%><%=GetCSharpVariableType(SourceTable.Columns[i])%> <%=OneToLower(SourceTable.Columns[i].Name)%><%if (i<SourceTable.Columns.Count-1){%>,<%}}%>) { <%for(int i=0;i<SourceTable.Columns.Count;i++){%> this.<%=OneToLower(SourceTable.Columns[i].Name)%>_=<%=OneToLower(SourceTable.Columns[i].Name)%>; <%}%> } <%for(int i=0;i<SourceTable.Columns.Count;i++){%> public <%=OneToUpper(SourceTable.Columns[i].Name)%> { get{return <%=OneToLower(SourceTable.Columns[i].Name)%>_;} } <%}%> } } < script runat = " template " > // 第一个字母大写 private string OneToUpper( string str) { return str.Substring(0,1).ToUpper()+str.Substring(1);} // 第一个字母小写 private string OneToLower( string str) { return str.Substring(0,1).ToLower()+str.Substring(1); } 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; } }} </ script > <%-- Name:ddAuthor:binbin Description: booksir默认的数据表必须是ID为组件开头在使用的过程中必须先添加数据库 --%> <% @ CodeTemplate Language = " C# " TargetLanguage = " Text " Src = "" Inherits = "" Debug = " False " Description = " Template description here. " %> <% @ Assembly Name = " SchemaExplorer " %> <% @ Import Namespace = " SchemaExplorer " %> <% @ Assembly Name = " System.Data " %> <% @ Import Namespace = " System.Data " %> <% @ Property Name = " SourceTable " Type = " SchemaExplorer.TableSchema " Category = " Context " Description = " 选择一个表 " %> <% @ Property Name = " NameSpace " Type = " System.String " Default = " SomeValue " Optional = " True " Category = " Strings " Description = " 程序的命名空间 " %> /**/ /*代码自动生成工具 codesmith Author: lovebanyi 风云*/ using System; using System.Web; using System.Data; using System.Data.SqlClient; namespace <%= NameSpace %> { public class <%=OneToUpper(SourceTable.Name)%> { public void Add(<%=OneToUpper(SourceTable.Name)%>Info <%=OneToLower(SourceTable.Name)%>Info) { string sql="insert into <%=SourceTable.Name%>(<%for (int i=1;i<SourceTable.Columns.Count;i++){%>[<%=SourceTable.Columns[i].Name%>]<%if (i<SourceTable.Columns.Count-1){%>,<%}%><%}%>) values(<%for (int i=1;i<SourceTable.Columns.Count;i++){%>@<%=SourceTable.Columns[i].Name%><%if (i<SourceTable.Columns.Count-1){%>,<%}%><%}%>)"; SqlParameter parms=GetParms(); SetParms(parms,<%=OneToLower(SourceTable.Name)%>Info); SQLHelper.ExecuteNonQuery(SQLHelper.CONN_STRING,CommandType.Text,sql,parms); } public void Update(<%=OneToUpper(SourceTable.Name)%>Info <%=OneToLower(SourceTable.Name)%>Info,int id) { string sql="update [<%=SourceTable.Name%>] set <%for (int i=1;i<SourceTable.Columns.Count;i++){%>[<%=SourceTable.Columns[i].Name%>]=@<%=SourceTable.Columns[i].Name%><%if (i<SourceTable.Columns.Count-1){%>,<%}%><%}%> where id="+id; SqlParameter parms=GetParms(); SetParms(parms,<%=OneToLower(SourceTable.Name)%>Info); SQLHelper.ExecuteNonQuery(SQLHelper.CONN_STRING,CommandType.Text,sql,parms); } public bool Del(int id) { string sql="delect from [<%=SourceTable.Name%>] where id="+id; SqlParameter parms=null; if (SQLHelper.ExecuteNonQuery(SQLHelper.CONN_STRING,CommandType.Text,sql,parms)==1) { return true; } else { return false; } } public <%=OneToUpper(SourceTable.Name)%>Info Get(int id) { string sql="select <%for (int i=1;i<SourceTable.Columns.Count;i++){%>[<%=SourceTable.Columns[i].Name%>]<%if (i<SourceTable.Columns.Count-1){%>,<%}%><%}%> from [<%=SourceTable.Name%>] where id="+id; SqlDataReader dr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING,CommandType.Text,sql,parms); if (dr.Read()) { <%=OneToUpper(SourceTable.Name)%>Info <%=OneToLower(SourceTable.Name)%>Info = new <%=OneToUpper(SourceTable.Name)%>Info(<%for (int i=1;i<SourceTable.Columns.Count;i++){%>dr.Get<%=SourceTable.Columns[i].SystemType%>(<%=i-1%>)<%if (i<SourceTable.Columns.Count-1){%>,<%}%><%}%>); return <%=OneToLower(SourceTable.Name)%>Info; } throw new Exception("对不起不存在这条记录"); } public DataSet GetList() { //这边还用这个方便,以后再考虑生成collection string sql="select * from [<%=SourceTable.Name%>]"; SqlParameter[] parms =null; using(SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING)) { conn.Open(); return SQLHelper.ExcuteDataSet(conn,CommandType.Text,sql,parms); } } public DataSet GetList(int pageSetup,int toPage,ref int itemCount) { SqlParameter[] parms=null; string sql="select count(*) from [<%=SourceTable.Name%>]"; SqlDataReader dr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING,CommandType.Text,sql,parms); if (dr.Read()) { itemCount=dr.GetInt32(0); } sql="<%=SourceTable.Name%>_Page"; parms = new SqlParameter[]{new SqlParameter("@pageSetup",SqlDbType.Int),new SqlParameter("@toPage",SqlDbType.Int)}; parms[0].Value=pageSetup; parms[1].Value=toPage; using (SqlConnection conn = new SqlConnection(SQLHelper.CONN_STRING)) { conn.Open(); return SQLHelper.ExcuteDataSet(conn,CommandType.StoredProcedure,sql,parms); } /**//* 复带存储过程的代码 CREATE PROCEDURE <%=SourceTable.Name%>_Page @pageSetup int,@topage int AS declare @SQLStr nvarchar(4000) set @SQLStr='SELECT Top '+cast(@pageSetup as varchar)+' * FROM [<%=SourceTable.Name%>] WHERE id NOT IN (SELECT TOP '+cast(@pageSetup*@topage as varchar)+' id from [<%=SourceTable.Name%>] )' EXECUTE sp_executesql @SQLStr */ } private SqlParameter[] GetParms() { SqlParameter[] parms=SQLHelper.GetCachedParameters("<%=OneToUpper(SourceTable.Name)%>_Cache"); if (parms==null) { parms = new SqlParameter[]{ <%for (int i=1;i<SourceTable.Columns.Count;i++){%> new SqlParameter("@<%=SourceTable.Columns[i].Name%>",SqlDbType.<%=GetSqlParms(SourceTable.Columns[i])%>)<%if (i<SourceTable.Columns.Count-1){%>,<%}%> <%}%> }; SQLHelper.CacheParameters("<%=OneToUpper(SourceTable.Name)%>_Cache",parms); } return parms } private void SetParms(SqlParameter[] parms,<%=OneToUpper(SourceTable.Name)%>Info <%=OneToLower(SourceTable.Name)%>Info) { <%for (int i=1;i<SourceTable.Columns.Count;i++){%> parms[<%=i.ToString()%>].Value=<%=OneToLower(SourceTable.Name)%>Info.<%=OneToUpper(SourceTable.Columns[i].Name)%> <%}%> } } } < script runat = " template " > // 第一个字母大写 private string OneToUpper( string str) { return str.Substring(0,1).ToUpper()+str.Substring(1);} // 第一个字母小写 private string OneToLower( string str) { return str.Substring(0,1).ToLower()+str.Substring(1); } private string GetSqlParms(ColumnSchema column) { switch(column.NativeType) { case "varchar": return "VarChar,"+column.Size.ToString(); case "int": return "Int"; case "datetime": return "DateTime"; case "money": return "Money"; case "text": return "Text"; default : { return ""; } }} 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; } }} </ script >