热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ERP代码生成器(开源,提供源码下载)

ERP代码生成器这个代码生成器的作用是弥补CodeSmith在批量表生成方面的不足。代码生成器运行效果基本的使用方法是,选择数据库,左边的树会列出数据库中的所有表,在参数区域,Template会列出

ERP代码生成器

这个代码生成器的作用是弥补Code Smith在批量表生成方面的不足。

代码生成器运行效果

clip_image002

基本的使用方法是,选择数据库,左边的树会列出数据库中的所有表,在参数区域,Template会列出当前目录下的CodeSmith模板,选择一个模板,Parameter会列出选中的模板的参数信息,选择生成的代码的存放路径为Target Folder

解决方案视图

clip_image003

下载源代码到本地后,请先添加程序集引用,包括Code Smith和SMO

clip_image004

SMO是操作SQL Server元数据的一套非常有效率的API,以用于获取SQL Server表信息

程序代码只有2个窗体,主窗体和连接数据库的窗体,在启动主程序后,自动会打开数据库连接窗体

clip_image005

之后,会在主窗体中显示打开的数据库,及它的所有表。

点击树节点前的CheckBox,会将该表添加到要生成模板代码的表中,中间一列是文本框,可以编辑。

Template会列出当前目录中所有cst结尾的文件,这里没有验证该文件是否是CodeSmith模板文件

lstTemplate.Items.Clear();

string[] files=Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.cst");

lstTemplate.Items.AddRange(files);

在参数填写区域,请用=将参数名和参数值配对填写

clip_image006

对于Target Folder,窗体启动时会给当前路径默认值

txtTargetFolder.Text = AppDomain.CurrentDomain.BaseDirectory;

真正实现调用Code Smith模板,生成代码的方法

CodeTemplateCompiler compiler = new CodeTemplateCompiler(templateFile);

compiler.Compile();

if (compiler.Errors.Count == 0){

CodeTemplate template = compiler.CreateInstance();

DatabaseSchema database = new DatabaseSchema(new SqlSchemaProvider(), connectionString);

TableSchema tableSchema = database.Tables[tableName];

template.Render(writer);

}

这就是这个代码生成器的全部了,关键的内容还是在Code Smith模板的编写

这里还有一个小问题,请看图

clip_image007

Table Node和它的CheckBox之前的距离太小,有些不美观,一直找不到是如何设置参数,能让CheckBox与Node之间的距离增大一点,以保持美观。

请到http://epn.codeplex.com/获取最新的代码和文档。

推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 本文介绍了Java中Currency类的getInstance()方法,该方法用于检索给定货币代码的该货币的实例。文章详细解释了方法的语法、参数、返回值和异常,并提供了一个示例程序来说明该方法的工作原理。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
author-avatar
保佑欣疼你的芯疼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有