Water for asp.net 之十三:用代码生成机简化开发 

source code address:water source

demo address:water demo

blogs address:water bolgs

     基于各位园友的建议,前两天研究了一下CodeSmith,今天花了一天时间写了一个用于生成Water ORM部分(其实是Water除界面开发外)的代码生成器,效果还不错,写出来和大家交流。

下载地址:code generator

  1. CodeSmith版本:CodeSmith Professional 5.2.0
  2. 包括的模板和C#文件
    Water for asp.net 之十三:用代码生成机简化开发
    其中Main.cst模板是主模板,只执行它就可以了。
  3. Main.cst模板参数
    执行Main.cst会弹出模板的参数界面,如:
    Water for asp.net 之十三:用代码生成机简化开发
    其各主要参数的说明如下:
    SourceTable:数据库表
    SourceView:数据库视图
    SourceSql:数据库SQL
    DatabaseNameSeperator:数据库命名间隔符
    NameSpacePrefix:命名空间前缀
    DeveloperName:开发者
    Description:描述信息
    ConnectionStringName:连接字符串名字
    DefaultOrderByExpress::排序表达式
    QueryOnly:是否仅查询
    AlonePrompt:是否生成独立的Prompt文件(默认为true生成独立的Prompt文件,为false时Prompt生成在实体配置文件中)
    RmoveNamePrefix:要清楚的表或视图前缀
    RmoveNameSuffix:要清楚的表或视图后缀
    SourceType:数据库数据源类型(只读,依据SourceTable、SourceView、SourceSql的情况会相应的变化)
    OutputDirectory:输出目标路径
    BusinessKey:业务关键字(改关键字在是生成各文件和类的依据)
  4. 点击Generate后,后生成如下文件:

    Water for asp.net 之十三:用代码生成机简化开发 
    部分文件源码如下:
    class="demo.Objects.Model.PrvMenuInfo" table="FND_PRV_MENU" dal-class="demo.Objects.DAL.PrvMenuDAL"  default-orderby-express="menuId" >
      <property name="menuId" column="MENU_ID" type="System.Int32" />"
      <property name="parentId" column="PARENT_ID" type="System.Int32" />"
      <property name="orderNumber" column="ORDER_NUMBER" type="System.Int32" />"
      <property name="menuType" column="MENU_TYPE" type="System.Int32" />"
      <property name="title" column="TITLE" type="System.String" />"
      <property name="description" column="DESCRIPTION" type="System.String" />"
      </entity>
    </entities>

    ?>
    <!--
       File       :PrvMenu.prompt.xml
       Description:权限菜单Prompt信息
       Version    :1.0
       Copyright  :Copyright ? 2010 ,2011  Water. All right reserved.
       History    :2010-07-14 liugq Original Version 
    -->
    <entity name="Prvmenu">
      <prompt field="menuId" desc="菜单ID"/>
      <prompt field="parentId" desc="父菜单ID"/>
      <prompt field="orderNumber" desc="排序"/>
      <prompt field="menuType" desc="菜单类型"/>
      <prompt field="title" desc="菜单标题"/>
      <prompt field="description" desc="菜单描述"/>
    </entity>
    
    //------------------------------------------------------------------------------------------------------- // File :PrvMenuInfo.cs // Description:权限菜单业务实体类 // Version :1.0 // Copyright :Copyright ? 2010 ,2011 Water. All right reserved. // History :2010-07-14 liugq Original Version //------------------------------------------------------------------------------------------------------- using System; using Water.Architecture2.Model; namespace demo.Objects.Model { ///<summary> ///权限菜单业务实体类(依据数据库表或视图或SQL) ///</summary> [Serializable] public class PrvMenuInfo:BaseEntity { #region Private Variable private int menuId ; private int parentId ; private int orderNumber ; private int menuType ; private string title = String.Empty; private string description = String.Empty; #endregion #region Public Properties //菜单ID public int MenuId { get{return this.menuId;} set{this.menuId = value;} } //父菜单ID public int ParentId { get{return this.parentId;} set{this.parentId = value;} } //排序 public int OrderNumber { get{return this.orderNumber;} set{this.orderNumber = value;} } //菜单类型 public int MenuType { get{return this.menuType;} set{this.menuType = value;} } //菜单标题 public string Title { get{return this.title;} set{this.title = value;} } //菜单描述 public string Description { get{return this.description;} set{this.description = value;} } #endregion } }

相关文章: