数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

基于元数据和模板的代码生成器的目标


发布日期:2023年12月24日
 
基于元数据和模板的代码生成器的目标
本来是想弄完JavaScript混淆器再来整理这个的但是天天都在和数据库打交道索性还是先简化自己的工作量吧把自己关于代码生成器的一些想法放上来由于本人从开始工作到现在基本做的都是MIS从刚开始的脚本模式到领域对象模式然后是从手工输入SQL语句到由反射自动生成基本的SQL语句虽然说方式变了很多但还是逃不出一些琐碎的事情比如说中间层一个表对应的实体你总要一个字段一个字段地把属性弄上去吧列就算了多那么点谁都头痛前台界面上你得把一个个字段对应的控件放上去吧调位置没法省什么工但放上去也很麻烦吧后台数据库操作如果要自己写UpdateInsert或者Delete就更麻烦了虽然有不少代码生成器可不是觉得麻烦就是觉得不顺手所以自己来动手

单位里自己写了一个代码生成器不过不算是基于模板的而且也不够智能和通用严格说起来只是在指定的地方输出固定的代码而已不过其他方面的功能还不错有点像现在的Codematic不过Codematic现在似乎有那么一个模板功能了看模板似乎是用xslt来生成代码这个似乎是不错的主意能省掉自己解析模板的工作不过觉得麻烦了一些暂时不考率之

再一个咚咚就是很流行的CodeSmith这东西不错现成的模板很多只要流行的框架它都能有模板套用编辑器之类的东西也挺完善不过还是觉得它麻烦原因稍后再说

CodeProject上面有一个Template based code generationSmart Template Engine感觉这个东西和CodeSmith有些异曲同工的地方CP上的都是需要模板中按照一定的规律进行替换后就可以生成输出的CS代码然后对CS代码进行动态编译执行后就得到了最终的代码这里就出现了我刚才说的麻烦的地方你必须有点编程的知识而且还必须使用生成器支持的语言而且模板编写起来也比较复杂上手的时间比较长还有一个可能不是原因的原因我看到的几个代码生成器似乎都只输出固定语言的代码

分析一下常用代码生成器的功能不外乎如下需要遍历用户所选的表 遍历每个表的字段遍历表的主键列(当然外键不少人也用可惜我一般不在数据库表加这个暂时就不考虑了等有时间再加入)分析字段的类型根据模板生成代码

所以我的目标就是模板定义简单不需要复杂的定义只需要通过定义一些简单的标记就可以完成

生成的代码不受语言的限制各种语言的语法由模板来定义就好了

可以扩展就是能支持插件可以自己扩展一些标记完成一些比较有针对性的事情当然这个插件就看dotNet支持哪些语言了数据库的类型和具体语言中数据类型的相互转换不同风格的名称转换等

可以利用简单的标记取得一些必须的属性表名列名在CLS中的数据类型字符串长度等等

生成代码的时候可以选择跳过某些不需要的字段比如有些列对应的代码已经再基类中定义了

可以指定为每个选定的表都生成单独的文件还是将所有生成的代码都放在一个文件中

PS改个标题其实不一定要连接到实际的数据库只要能有元数据就可以了

上一篇:简化基于数据库的DotNet应用程序开发

下一篇:加载大量数据时的loading制作