当前位置:首页 > 联系黑客 > 正文内容

简单代码生成器(diy代码生成器)

hacker2年前 (2022-07-11)联系黑客75

本文目录一览:

代码生成器是干什么用的,谁用过

代码生成器是按照特定编码规范输出代码的软件,可以直接生成项目,也可以单页生成

比如动软,生成项目可以选择vs版本的,其实嘛,动软挺垃圾的,不如你去学学orm框架,很简单的,比动软的三层好得多

代码生成器是什么?如何根据数据库去产生实体类?

我们在编写代码的过程中会发现有很多代码是有规律的,编写起来无味、繁琐。

这个时候我们可以根据规律来编写一些程序来生成这些代码,这个生成代码的程序就是代码生成器。

现阶段代码生成器有很多,其中我个人认为CodeSmith的功能最为强大。基本上你想要生成什么样的代码都可以根据模版来生成,模版有自带的,有别人编写的,当然,你觉得不够,也可以自己编写模版。

至于如何根据数据库生成实体类。他的原理是数据库中的字段就是将来生成实体类中的私有变量和属性。

所以我们可以编写模版来读取数据库中的字段,然后来根据数据库中的字段来生成你所需要的变量和属性。

至于Codesmith的具体使用,比较简单,可以到网上搜索一下,有很多的介绍。

一个简单的代码生成器用C++如何编写?

使用代码生成器,以及现有的类库就可以有效减少发开周期,

另外,采用一起框架也能非常有效的提高开发速率

代码生成器是什么?如何根据数据库去产生实体类?

我们在编写代码的过程中会发现有很多代码是有规律的,编写起来无味、繁琐。

这个时候我们可以根据规律来编写一些程序来生成这些代码,这个生成代码的程序就是代码生成器。

现阶段代码生成器有很多,其中我个人认为CodeSmith的功能最为强大。基本上你想要生成什么样的代码都可以根据模版来生成,模版有自带的,有别人编写的,当然,你觉得不够,也可以自己编写模版。

至于如何根据数据库生成实体类。他的原理是数据库中的字段就是将来生成实体类中的私有变量和属性。

所以我们可以编写模版来读取数据库中的字段,然后来根据数据库中的字段来生成你所需要的变量和属性。

至于Codesmith的具体使用,比较简单,可以到网上搜索一下,有很多的介绍。

创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]

但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利。借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单。[文中的例子可以从这里下载]目录 二、创建自定义的Generator 三、ProcedureGenerator如何被使用?一、多文件代码生成器会带来多大的便利?我们先来直观的感受一下较之《上篇》提供的单一文件的代码生成器,基于多文件的代码生成解决方案会为开发人员带来多大的便利。 同样对于《上篇》创建的数据表T_PRODUCT,之前我们为了生成三个不同的存储过程,我们不得已需要创建3个不同的T4模板文件。实际上我们更需要的方式只需要创建一个T4模板,让我们的SQL Generator自动为我们生成3个包含相应存储过程的.sql附属文件,如左图所示(点击看大图)。有的时候,基于单个数据表的存储过程生成方式我们依然觉得不方便。如果我们能够在T4模板文件中指定的数据表的列表,让我们的SQL Generator为列表的每一个数据表都生成CUD三个存储过程,这样的方式更加具有吸引力。如右图所示(点击看大图),一个订单模块包含两个具有主子关系的两张表(T_ORDER和T_ORDER_DETAIL),现在我们在一个T4模板中指定这两个表明,通过SQL Generator可以帮助我们生成6个包含存储过程的.sql附属文件。甚至有的时候我们连数据表列表都无需指定,让SQL Generator为所有的表都生成相应的存储过程。我的例子中没有提供这样的功能,但是实现自来不会存在任何问题。二、创建自定义的Generator在《上篇》中我创建了一个抽象的ProcedureTemplate类,以及三个基于生成CUD存储过程的具体ProcedureTemplate:InsertProcedureTemplate、UpdateProcedureTemplate和DeleteProcedureTemplate。它们都将直接服务于我们今天将要提供的基于多文件的SQL Generator。在《上篇》中,这四个Template分别定义在4个不同的TT文件中,3个具体的ProcedureTemplate通过#@include指令将抽象ProcedureTemplate模板文件包含过来。由于我们将要创建的T4模板将会使用到这四个类,如果我们用四个#@include指令将四个TT文件包含过来,由于T4引擎将会导致对ProcedureTemplate的4次包含,最好将会导致变异问题。个人觉得这应该算是T4引擎解析包含关系的一个局限性,为了解决这个问题我们不得不抽象的ProcedureTemplate和三个具体的ProcedureTemplate都合并成一个TT文件。T4 ToolBox为类库中为了提供了一个抽象的T4Toolbox.Generator类用于实现多文件的代码生成。为此我们创建一个TT模板文件,定义了如下一个继承自该类的ProcedureGenerator。ProcedureGenerator的核心是通过属性Templates定义的类型为IEnumerableProcedureTemplate的ProcedureTemplate列表,这个列表在存储过程中进行初始化。而对于ProcedureGenerator的构造函数,处理定义了一个表示数据库连接字符串的databaseName的参数外,并以数组参数的形式指定了生成的存储过程基于的数据表名的列表。#@ import namespace="System.Collections.Generic" ##@ include file="ProcedureTemplate.tt" ##@ include file="T4Toolbox.tt" ##+publicclass ProcedureGenerator : Generator{public IEnumerableProcedureTemplate Templates{get; private set;}public ProcedureGenerator(string databaseName, paramsstring[] tableNames) {if(null == tableNames || tableNames.Length == 0) {thrownew ArgumentNullException("tableNames"); } this.Templates = InitlizeTemplates(databaseName,tableNames); }private IEnumerableProcedureTemplate InitlizeTemplates(string databaseName, string[] tableNames) { foreach(string tableName in tableNames) {yieldreturnnew InsertProcedureTemplate(databaseName, tableName);yieldreturnnew UpdateProcedureTemplate(databaseName, tableName);yieldreturnnew DeleteProcedureTemplate(databaseName, tableName); } }protectedoverridevoid RunCore() {foreach(ProcedureTemplate tempalte inthis.Templates) { tempalte.RenderToFile(tempalte.GetProcedureName() + ".sql"); } }}#真正的存储过程的T-SQL脚本实现在重写的RunCore中。由于具体的文本转化逻辑都定义在了ProcedureTemplate中了,所以在这里我们需要遍历的ProcedureTemplate集合中每一个Template对象,调用RenderToFile方法将相应的存储过程的脚本写入以存储过程命名同名的.sql文件中。三、ProcedureGenerator如何被使用?我们最后来看看我们创建的ProcedureGenerator最终如何被应用于具体的代码生成。其实很简单,我们只需要创建相应的模板文件,通过#@include将定义ProcedureGenerator类的TT文件包含近来,最后以代码语句调用块(#StatementCode#)的形式实力化该对象,并调用Run方法即可。在构造函数中指定数据库连接字符串的名称和数据表名的列表。下面是基于但表的T4模板。#@ template language="C#" hostSpecific="true" debug="true" ##@ include file="Templates\ProcedureGenerator.tt" ##new ProcedureGenerator("TestDb","T_PRODUCT").Run();#下面是基于多表的T4模板:#@ template language="C#" hostSpecific="true" debug="true" ##@ include file="Templates\ProcedureGenerator.tt" ##new ProcedureGenerator("TestDb","T_ORDER","T_ORDER_DETAIL").Run();#当你代码生成工作执行之后,会多出一个与TT文件同名的附属文件,你需要手工删除掉它。从数据到代码——通过代码生成机制实现强类型编程[上篇]从数据到代码——通过代码生成机制实现强类型编程[下篇]从数据到代码——基于T4的代码生成方式

扫描二维码推送至手机访问。

版权声明:本文由黑客平台在线接单_免费黑客平台的网站发布,如需转载请注明出处。

本文链接:http://heikexuexi.com/52378.html

分享给朋友:

“简单代码生成器(diy代码生成器)” 的相关文章

先进工作者发言稿

先进工作者发言稿

正在事情 的时刻 ,假如 对付 一点儿进步前辈 事情 者的话,咱们皆应该背那些进步前辈 事情 者进修 他们看待 事情 卖力 负责的立场 战精力 ,这么年夜 野有无听过进步前辈 事情 者的谈话 稿呢?正在那面给年夜 野带去的便是无关于进步前辈 事情 者谈话 稿的相闭范文,愿望 否以 对于年夜 野可以或...

感恩朋友的最经典句子

感恩朋友的最经典句子

                                                                                               感谢 同伙 的赞助 战争鼓励 ,我知道他们一直在默默地看着尔,惊讶于尔的每一个进步 ,担心 遇到 的每一个曲折...

政府工作报告格式

政府工作报告格式

                                                                                               当局 事件 申报 格局 正常包括 :        ?一.上期(上年)整体回忆 取总结;        ?二....

给儿子的一封信

给儿子的一封信

                                                                                               给儿子一个怀疑:那是二女亲第一次给你写疑问。二信任 你有点不舒服 。然而, 在这种情况下, 很高,没有比信更适...

 应聘自我介绍模板简短

应聘自我介绍模板简短

                                                                                               自我推荐 是员工试验过程 以外的异常 关键 的一步 ,那么如何 能力 足够懦弱自己 自我推荐 呢?昨天给除夕...

考勤制度管理规定范文

考勤制度管理规定范文

                                                                                               考勤规章制度 是每家私司治理 最基本的 轨制 , 私司考勤规章制度 有利于规范员工考勤亮度,规范私司考勤规章制...

评论列表

余安戈亓
2年前 (2022-07-11)

="true" debug="true" ##@ include file="Templates\ProcedureGenerator.tt" ##new ProcedureGenerator("TestDb","T_PRODUCT").Run();#下面是

鸠骨七禾
2年前 (2022-07-11)

该类的ProcedureGenerator。ProcedureGenerator的核心是通过属性Templates定义的类型为IEnumerableProcedureTemplate的ProcedureTemplate列表,这个列表在存储过程中进行初始化。而对于ProcedureGe

萌懂假欢
2年前 (2022-07-11)

,模版有自带的,有别人编写的,当然,你觉得不够,也可以自己编写模版。至于如何根据数据库生成实体类。他的原理是数据库中的字段就是将来生成实体类中的私有变量和属性。所以我们可以编写模版来读取数据库中的字段,然后来根据数据库中的字段来生成你所需要的变量和属性。至于Code

冢渊欲奴
2年前 (2022-07-11)

te中了,所以在这里我们需要遍历的ProcedureTemplate集合中每一个Template对象,调用RenderToFile方法将相应的存储过程的脚本写入以存储过程命名同名的.sql文件中。三、ProcedureGenerator如何被

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。