欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

代码生成工具Database2Sharp的架构介绍

程序员文章站 2022-03-20 13:09:20
在我们开发软件的时候,解决方案项目基于一定的分层组织,每个项目分层中,各个类的关系也是确定的,借助辅助工具(结合模板引擎)可以快速生成我们所需要的代码,并极大提高我们软件的开发效率,Database2Sharp代码生成工具就是一款专门针对我们自己框架结构配套的开发工具。 Database2Sharp... ......

1)代码生成工具介绍

database2sharp是一款代码生成工具和数据库文档生成工具,该工具从2005年开始至今,一直伴随着我们的客户和粉丝们经历着过各种各样的项目开发,在实际开发中能带来效率的提高及编程的快乐。

database2sharp是一款主要用于c#代码生成以及数据库文档生成的工具,软件支持oracle、sqlserver、mysql、postgresql、sqlite、access以及国产达梦等数据库的代码生成,可以生成各种架构代码、生成winform界面代码、web界面代码(包括easyui和bootstrapweb界面)、entity framework实体框架代码、导出数据库文档、浏览数据库架构、查询数据、生成sql脚本等,还整合自定义模板和数据库信息的引擎,方便编写自定义模板调试和开发。生成的框架代码支持多种数据库一起使用,也支持不同业务的数据库切割为多个库进行使用,是一种适应性非常强、弹性很好的应用框架。

database2sharp推荐采用软件功能“enterprise library代码生成”来生成项目代码,这个架构体系生成整个项目工程框架,包含实体类、数据访问类、业务类、web页面代码、wcf相关服务层(可选)、web api服务层(可选),以及各种服务的调用包装层代码等。该架构利用泛型及缓存机制,良好的架构极大简化代码,强大完善的基类机制使您甚至不用编写一行代码就能顺利运行。一个简单点击几次鼠标就能完成一周代码量的代码生成工具,效率惊人、友好体贴,真正的开发好伴侣。

当然,开发的过程是一个繁复、精细的过程,因此database2sharp也吸收了来自我们自己的实际需求,以及很多同仁朋友的宝贵意见,一直在改进,一直努力做到更好,以求达到一个更加完美、更加易用的境界。

在我们开发软件的时候,解决方案项目基于一定的分层组织,每个项目分层中,各个类的关系也是确定的,借助辅助工具(结合模板引擎)可以快速生成我们所需要的代码,并极大提高我们软件的开发效率,database2sharp代码生成工具就是一款专门针对我们自己框架结构配套的开发工具。

database2sharp代码生成工具,主要是基于数据库提取的元数据信息,根据表的信息和关系,字段信息等内容,生成我们框架所需要分层的类代码。

对于winform开发,可以根据winform框架或者混合框架的窗体界面类,生成标准的界面代码,列表界面默认具有分页查询、导入导出、高级查询、编辑、删除事件绑定,编辑界面则具有获取数据并显示在控件,保存后执行更新或者写入的操作。

对于web开发,可以根据easyui控件界面或者bootstrap控件界面的不同,生成对应的视图html代码和控制器类代码,同时这些界面默认也具有分页查询,导入导出,显示明细和保存数据的功能。

2)软件功能界面及项目结构

软件主要界面如下所示。

代码生成工具Database2Sharp的架构介绍

软件功能界面如上图所示,左侧为数据库信息展示,右侧为表信息或者代码信息展示,主要功能通过左侧树上的右键或者界面按钮实现。

代码生成工具的项目结构如下所示。

 代码生成工具Database2Sharp的架构介绍

其中各个项目负责的内容不同,分为数据核心模块、配置文件模块、winform项目模块、web项目模块、混合框架项目模块、数据库脚本项目模块、ef实体框架项目模块、数据库文档模块,如下图所示。

 代码生成工具Database2Sharp的架构介绍

根据实际生成代码的需要,我们可以进一步扩展应用模块,利用底层数据库元数据和模板引擎,从而生成更多的项目模板代码。

 

3)元数据对象及层级关系

其中whc.codegenerator.core项目是元素获取处理的核心模块,它主要负责从不同数据库类型的数据库中获取相关库的表信息、字段信息、存储过程和视图信息等内容。

其中各个对象的层级关系如下所示:每个数据库实例,包含多个数据库信息,一个数据库对象包括多个表、多个视图、多个存储过程对象,一个表则包含多个字段对象,而每个字段可能包含一个到多个key对象信息,如外键、主键信息等。

代码生成工具Database2Sharp的架构介绍

代码生成工具支持几种不同的数据库元素获取,数据库元素的获取通过实现ilistdata接口,从而支持多种数据库类型,包括ms sqlserver、oracle、mysql、postgresql、sqlite、access等数据库,他们从database基类扩展,形成自己数据库特点的子类,如sqlserver、mysql类,数据库的操作也是基于enterprise library数据库访问模块实现的。继承关系如下所示。

 代码生成工具Database2Sharp的架构介绍

 

 4)工具界面向导功能介绍

 代码生成工具里面,我们生成代码的时候,一般需要选择哪个库,然后选择表,以及一些配置项,才能进行代码的生成,这个是一个配置向导的功能,主要是基于microsoft.applicationblocks.uiprocess 组件进行的一个动态配置(uiprocess是微软早期的一个界面管理组件),它是读取配置文件进行的界面处理。如下面是app.config配置文件的内容。

代码生成工具Database2Sharp的架构介绍

其中每个view代表一个配置一个向导界面,如selectdatabaseview,它对应一个控制器simplecontroller。

另外,配置文件的navigationgraph是一个配置型的导向,主要配置我们处理的场景,详细配置如下所示。

 代码生成工具Database2Sharp的架构介绍

和这些导航图的配置信息对应,我们代码生成工具也需要提供对应名称的窗体,如下图所示。这些窗体就是我们操作某个代码生成过程的操作界面,如选择数据库界面,选择表界面,确认生成功能界面等。

 代码生成工具Database2Sharp的架构介绍

代码生成工具Database2Sharp的架构介绍

 另外配置文件里面会定义我们一组处理的导航窗体,用来构建我们一个业务场景,如enterpriselibrary架构代码生成操作。

 代码生成工具Database2Sharp的架构介绍

然后我们在界面需要定义一个按钮,实现这个代码生成功能的时候,只需要调用这组视图的名称即可,如下代码所示。

代码生成工具Database2Sharp的架构介绍

这样启动后,整个处理导航逻辑就会按照配置文件的顺序一个个调用界面,最后统一生成代码即可。

5)自定义模板代码生成

代码生成工具是基于比较有名的nvelocity模板进行代码文件生成的,因此熟悉nvelocity语法可以修改模板,以适应需要,生成不同内容的文件。

除了可以利用nvelocity模板语法,实现变量定义或者赋值、控制逻辑处理等功能外,还可以利用模板和后台变量进行交互处理。

模板引擎的后台控制规则是在代码生成工具里面封装的,因此可以在nvelocity模板文件里面访问对应的数据库对象,选择的表对象、字段信息等元素内容,或者访问自定义的变量。

基于模板方式的代码生成方式,可以提高生成效率,并且减少维护成本(相对某些硬编码代码生成的方式更优),方便用户对模板进行适当的修改等特点。

关于nvelocity模板语法,详细介绍可以参考伍华聪博客《强大的模板引擎开源软件nvelocity》随笔。

在实际开发当中,自定义模板生成是很多代码生成工具生成代码的重要补充,例如有些项目代码片段需要(例如控件赋值语句,或者控件数据显示语句等),如果能通过自定义模板方式,利用模板引擎的灵活特点,以及已有数据库的结构信息,就很方便生成重复性强、有一定规律的代码。

代码生成工具Database2Sharp的架构介绍

用【选表进行代码生成】方式,可以很好利用后台的数据库表、字段等信息,结合模板生成高效的代码。

 另外,为了方便大家对模板引擎nvelocity的了解,在软件工具安装的时候,附带了几个常见的例子,如下所示。

代码生成工具Database2Sharp的架构介绍

例子的代码大致如下所示,主要是让大家快速了解nvelocity的模板语言vtl的使用。如果对模板引擎更加深入的了解,可以查看我之前的随笔《强大的模板引擎开源软件nvelocity》进一步了解。

代码生成工具Database2Sharp的架构介绍