• 代码生成工具随笔(2) 我的生成工具


    目前有很多代码生成工具,很多做得很好,我在上一篇关于代码生成工具的随笔(代码生成工具随笔(1) ---关于代码生成器 )中,大概介绍了一些代码生成工具的现状,也得到很多人的关注。
    由于本人很早就在代码生成工具方面有所研究,因此在开发过程中没有使用CodeSmith,MyGeneration子类的生成工具,我觉得很多地方使用这些工具还是很麻烦,按照别人定制模板总是感觉很乏味,没有满足感和成就感,感觉自己掌握生成工具的核心代码总是很好(实际上也是,而且可以很快定制出新的架构代码生成),另外如果自己掌握了数据库的一些信息,还可以作很多事情,不仅仅是一般的代码生成了, 如还可以生成数据库文档,测试数据导入等等的一些。
    在实际的开发中,公司很多同事、朋友都提出了很多很好的建议和需求,因此我的代码生成工具也在不断的改进完善中,从开始的一般代码生成,到一个架构完整解决方案的生成, 从开始的控制台程序到整合很多功能Windows Forms 程序,一切都不断的完善中...

    本站的代码生成工具已经放在了www.iqidi.com上,可供下载使用

    我的C#代码生成工具下载地址:
    (个人网站)下载地址:http://www.iqidi.com/Download/Database2SharpSetup.rar
    (华军软件)下载地址:http://www.newhua.com/soft/54592.htm
    (天空网站)下载地址:http://www.skycn.com/soft/32456.html 
    下面截一些图像,对C#代码生成工具进行介绍,希望能够给大家带来更多的信息和帮助。
    1。支持NHibernate代码和PetShop架构代码的生成(多种形式).
    2。可以查看数据库的信息和实现查询分析器的功能,可以很快地看看数据库的信息哦
    3。数据库文档的生成,在模块设计中非常有用,谁想去写描述和字段名称,类型的对应关系呢,笨!
    4。测试数据脚本的生成,在外键非常复杂的表中,我们想添加一条记录都是很容易哦,这个可以更加表的外键关系调整插入测试数据的顺序,很周到吧。
    5。最新加入了Web界面自动生成功能
    6。最新加入了Castle的ActiveRecord代码生成功能

    Database2Sharp升级到V3.5版本功能增加或者改进:
    1. 增加国际化语言支持(提供中文和英文两种界面)
    2. 增加数据库表结构SQL脚本的生成(各种不同的数据库生成不同的SQL脚本),在打开表信息的时候同时在下方生成。
    3. 增加Select、Update、Insert和Delete基本语句代码的生成。
    4. 增加实体类快速生成的功能,直接在窗体中打开,并用语法高亮显示。
    5. 增加可以对表进行选择性生成代码的功能。
    6. 增加对MySQL数据库GBK的支持,方便使用中文操作,完好支持MySQL5.0。
    7. 改善SQL Analyzer和测试SQL脚本的操作。
    8. 改善数据库配置项管理,提供更方便简单的操作。

    blog_pic1.jpg 

    下面这个是代码生成工具生成的代码,一个解决方案中包括各层所需要的代码哦,另外Petshop架构一、三中生成实体类对应的集合,我们完全可以使用该集合代替ArrayList,而且该集合对象是采用目前最好的实现方式来做的,继承自可以排序的集合类。目前我还没有完成页码代码的生成,下一步工作就是要做这个事情,呵呵。
    生成的代码工程 
    NHibernate代码主要是生成实体类的代码和HBM文件, 这些类的关系是自动根据您的表关系自动完成的哦,比较智能吧

    Web界面代码和后台操作代码等自动生成,你如果开发Web的话,会节省你很多调整界面的时间,加快开发效率


    Castle代码目前主要是生成实体类的代码(包含各种ActiveRecord所需要的Attribute), 关系自动生成,模版代码的定制能力更强。
    using System;
    using System.Collections;
    using System.Xml.Serialization;
    using Castle.ActiveRecord;

    namespace HuaweiSoftware.IPSPBD.Entity
    {
        [ActiveRecord("Product")]
        public class ProductInfo : ActiveRecordBase
        {
            #region 成员变量

            private IList m_itemList;        
            private string m_productId;        
            private CategoryInfo m_category;        
            private string m_name;        
            private string m_descn;        

            #endregion

            #region 属性

            [HasMany(typeof(ItemInfo), Table="Item", ColumnKey="ProductId")]
             public virtual IList ItemList
            {
                get
                {
                    return this.m_itemList;
                }
                set
                {
                    this.m_itemList = value;               
                }
            }

            [PrimaryKey(PrimaryKeyType.Assigned, "ProductId")]
             public virtual string ProductId
            {
                get
                {
                    return this.m_productId;
                }
                set
                {
                    this.m_productId = value;               
                }
            }

            [BelongsTo("Category")]
             public virtual CategoryInfo Category
            {
                get
                {
                    return this.m_category;
                }
                set
                {
                    this.m_category = value;               
                }
            }

            [Property("Name")]
             public virtual string Name
            {
                get
                {
                    return this.m_name;
                }
                set
                {
                    this.m_name = value;               
                }
            }

            [Property("Descn")]
             public virtual string Descn
            {
                get
                {
                    return this.m_descn;
                }
                set
                {
                    this.m_descn = value;               
                }
            }
            #endregion
           
            #region 静态方法
           
            public static void DeleteAll()
            {
                ActiveRecordBase.DeleteAll(typeof(ProductInfo));
            }
           
            public static ProductInfo[] FindAll()
            {
                return ((ProductInfo[])(ActiveRecordBase.FindAll(typeof(ProductInfo))));
            }
           

             public static ProductInfo Find(string ProductId)
            {
                return ((ProductInfo)(ActiveRecordBase.FindByPrimaryKey(typeof(ProductInfo), ProductId)));
            }
        
           
            #endregion

        }
    }

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
    专注于Winform开发框架/混合式开发框架Web开发框架Bootstrap开发框架微信门户开发框架的研究及应用
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
        
  • 相关阅读:
    TCP拥塞控制机制
    C/S 与 B/S 区别
    ext4文件系统新特性
    关于TCP慢启动和拥塞避免的题
    [信息图表]移动学习 Go Study
    [时间线]Android市场的发展
    学习,只有勤奋是不够的……
    UNIX域套接字实例
    程序员的本质
    淘宝Web服务器Tengine正式开源
  • 原文地址:https://www.cnblogs.com/wuhuacong/p/514730.html
Copyright © 2020-2023  润新知