| Blog信息 |
|
blog名称:注册会计师(注会)练习软件 日志总数:398 评论数量:116 留言数量:27 访问次数:3304021 建立时间:2005年6月6日 |

| |
|
一个codesmith的实体模板 软件技术
吕向阳 发表于 2006/9/7 17:09:24 |
|
一个codesmith的实体模板
一个codesmith的实体模板
<%--引用%><%@ CodeTemplate Language="C#" TargetLanguage="Text" Description="Template description here." %><%@ Assembly Name="SchemaExplorer" %><%@ Import Namespace="SchemaExplorer" %><%@ Assembly Name="CodeTemplateRule" %><%@ Import Namespace="CodeTemplateRule" %><%--模板属性%><%@ Property Name="DataBase" Type="SchemaExplorer.DatabaseSchema" Category="Context" Description="数据库连接." %><%@ Property Name="TableName" Type="System.String" Default="" Optional="False" Category="" Description="表名" %><%@ Property Name="NameSpace" Type="System.String" Default="Company.Product.Module" Optional="False" Category="" Description="命名空间" %><%@ Property Name="Author" Type="System.String" Default="Author" Optional="False" Category="" Description="作者" %><%@ Property Name="Description" Type="System.String" Default="实体类" Optional="False" Category="" Description="该类的描述" %>
<script runat="template"> CodeTemplateRule rule=new CodeTemplateRule();</script>
using System;namespace <%= NameSpace %>{ /// <summary> /// 作用:<%= Description %> /// 作者:<%= Author %> /// 日期:<%= DateTime.Now.ToString() %> ///</summary> public class <%= rule.GetTableName(TableName) %>Entity { /// <summary> /// 构造函数 ///</summary> public <%= rule.GetTableName(TableName) %>Entity() { } <% //局部变量 ColumnSchemaCollection columns=rule.GetColumnCollection(DataBase,TableName); for(int i=0;i<columns.Count;i++) { Response.Write(" //"+columns[i].Description+"\r\n"); Response.Write(" private "+rule.GetType(columns[i])+" m_"+columns[i].Name+";\r\n"); } %> <% //属性 for(int i=0;i<columns.Count;i++) { %> ///<summary> ///<%= columns[i].Description %> ///</summary> public <%= rule.GetType(columns[i]) %> <%= columns[i].Name %> { get { return m_<%= columns[i].Name %>; } set { m_<%= columns[i].Name %>=value; } } <% } %> }}=====================================================其中要用到的dll文件内容,编译后放到\Program Files\CodeSmith\v3.0\AddIns文件夹下:
500)this.width=500'>using System;500)this.width=500'>using System.Text;500)this.width=500'>using System.ComponentModel;500)this.width=500'>using CodeSmith.Engine;500)this.width=500'>using System.Data;500)this.width=500'>using SchemaExplorer;500)this.width=500'>500)this.width=500'>namespace CodeTemplateRule500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'>500)this.width=500'> /**//// <summary>500)this.width=500'> /// CodeSmith自动生成代码所用到的函数500)this.width=500'> /// </summary>500)this.width=500'> public class CodeTemplateRule500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'>500)this.width=500'> /**//// <summary>500)this.width=500'> /// 获取所有列的集合500)this.width=500'> /// </summary>500)this.width=500'> /// <param name="dataBase">数据库Schema</param>500)this.width=500'> /// <param name="tableName">表名</param>500)this.width=500'> /// <returns>Columns Schema</returns>500)this.width=500'> public ColumnSchemaCollection GetColumnCollection(DatabaseSchema dataBase,string tableName)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> TableSchemaCollection tables = new TableSchemaCollection(dataBase.Tables);500)this.width=500'> ColumnSchemaCollection columns=null;500)this.width=500'> for(int i=0;i<tables.Count;i++)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> if(tables[i].Name.ToUpper()==tableName.ToUpper())500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> TableSchema ts=tables[i];500)this.width=500'> columns=new ColumnSchemaCollection(ts.Columns);500)this.width=500'> }500)this.width=500'> }500)this.width=500'> return columns;500)this.width=500'> }500)this.width=500'> 500)this.width=500'>500)this.width=500'> /**//// <summary>500)this.width=500'> /// 获取处理后的表名 例如:ORG_Person,返回Person500)this.width=500'> /// </summary>500)this.width=500'> /// <param name="tableName">表名</param>500)this.width=500'> /// <returns>返回处理后的表名</returns>500)this.width=500'> public string GetTableName(string tableName)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> int i=tableName.IndexOf("_");500)this.width=500'> return tableName.Substring(i+1,tableName.Length-(i+1));500)this.width=500'> }500)this.width=500'> 500)this.width=500'>500)this.width=500'> /**//// <summary>500)this.width=500'> /// 获取唯一号的变量名,第一个字母小写500)this.width=500'> /// </summary>500)this.width=500'> /// <param name="guidColumn">唯一号列名</param>500)this.width=500'> /// <returns>唯一号的变量名</returns>500)this.width=500'> public string GetGuidColumnVar(string guidColumn)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> string guid;500)this.width=500'> guid=guidColumn.Substring(0,1).ToLower()+guidColumn.Substring(1,guidColumn.Length-1);500)this.width=500'> return guid; 500)this.width=500'> } 500)this.width=500'> 500)this.width=500'>500)this.width=500'> /**//// <summary>500)this.width=500'> /// 获取c#变量类型500)this.width=500'> /// </summary>500)this.width=500'> /// <param name="column">列</param>500)this.width=500'> /// <returns>c#变量类型</returns>500)this.width=500'> public string GetType(ColumnSchema column)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> if (column.Name.EndsWith("TypeCode")) return column.Name;500)this.width=500'> 500)this.width=500'> switch (column.DataType)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> case DbType.AnsiString: return "string";500)this.width=500'> case DbType.AnsiStringFixedLength: return "string";500)this.width=500'> case DbType.Binary: return "byte[]";500)this.width=500'> case DbType.Boolean: return "bool";500)this.width=500'> case DbType.Byte: return "int";500)this.width=500'> case DbType.Currency: return "decimal";500)this.width=500'> case DbType.Date: return "DateTime";500)this.width=500'> case DbType.DateTime: return "DateTime";500)this.width=500'> case DbType.Decimal: return "decimal";500)this.width=500'> case DbType.Double: return "double";500)this.width=500'> case DbType.Guid: return "Guid";500)this.width=500'> case DbType.Int16: return "short";500)this.width=500'> case DbType.Int32: return "int";500)this.width=500'> case DbType.Int64: return "long";500)this.width=500'> case DbType.Object: return "object";500)this.width=500'> case DbType.SByte: return "sbyte";500)this.width=500'>   |
|
|