《CodeSmith》代码生成器怎么使用
作者:admin发布时间:2021-10-31分类:软件教程浏览:评论:0
CodeSmith是一款非常好用的代码生成器手机软件,对这个手机软件不了解的朋友很有可能不清楚如何使用,它能够和PowerDesigner概念模型设计专用工具一起应用更强,下边表述怎样用CodeSmith完成预估的结论的,事前申明一下,在这里只做一个简易的Demo,并不详尽的解读CodeSmith每个强劲的作用,有感兴趣的小伙伴能够开启CodeSmith的帮助文件掌握.我只做一个开诚布公,期待能激发人们大量思维的火苗~
先看一下CodeSmith的原理:
简易的说:CodeSmith最先会去数据库查询获得数据库查询的构造,如每个表的名字,表的字段名,表间的关联这些,以后再依据客户自定好的模版文档,用数据库查询构造中的关键词取代模版的动态性自变量,最后輸出并储存为大家必须的总体目标文档.好,基本原理清晰了,就逐渐实践活动吧:
1. 运作CodeSmith,能够见到如下所示页面:
2. CodeSmith是建立模版的地区,最先自然是建立一个模版啦,点一下菜单栏最左侧的New Document—C# Template,如下图所示:
3. 点一下运作按键,运作效果如下所示:
好,大家来剖析怎么会获得那样的工作結果吧,点一下运行窗口左下方的Template按键回到模板设计对话框,能够发觉,只需是沒有被<%%>或是<scriptrunat="template"></script>包括的文本均被立即輸出了,这种之后还要被换为大家分层次构架中一些一成不变的模版编码:
4. 好啦,简易掌握啦一些CodeSmith的编码构造,下边就逐渐用它来转化成大家的分层次编码吧,在这里我不详细介绍分层次构架的定义了,要不然就偏移主题风格了.为了更好地能更简洁明了的表明,大家在这里就仅用CodeSmith转化成分层次构架的实体线层吧.
Major.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Entity
{
publicpartialclass Major
{
publicInt32 MajorID{ get;set; }
publicString Name{ get;set; }
publicString Remark{ get;set; }
}
}
Student.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Entity
{
publicpartialclass Student
{
publicString StudentID{ get;set; }
publicInt32 MajorID{ get;set; }
publicString Name{ get;set; }
publicBoolean Sex{ get;set; }
publicInt32 Age{ get;set; }
publicString Remark{ get;set; }
}
}
我将2个文档中反复的编码应用淡黄色背景颜色加重了,我们可以发觉,假如每一个表都需要根据手动式建立,那麼将有大批量的编码(黄色背景)必须 拷贝实际操作,这种实际操作是复杂而沒有任何的实际意义的.因而,大家会期待将黄色背景一部分的编码制成模版,而任何变动的编码由数据库查询的构造动态性转化成,如此一来,大家就无需再为这种讨厌的拷贝实际操作郁闷了.
5. 那麼就逐渐大家的实践活动吧,就在刚建立好的文档现在开始,先随便储存到一个文件目录下,取名为test.cst,然后删掉不必要的编码,只保存第一行,这家银行说明大家的模版应用哪种语言表达,这儿大家应用C#.
<%@ CodeTemplateLanguage="C#" TargetLanguage="Text" Src="" Inherits=""Debug="False" CompilerVersion="v3.5"Description="Template description here."%>
6. 参考CodeSmith的原理,大家最先会为CodeSmith给予一个数据库查询,要怎么使它和SQL Server 2005关系起來呢?只需再加上下边的编码就可以了:
<%-- 载入浏览数据库文件的部件SchemaExplorer,并申明其应用的类名 --%>
<%@ AssemblyName="SchemaExplorer"%>
<%@ ImportNamespace="SchemaExplorer"%>
<%-- 数据库查询 --%>
<%@ PropertyName="SourceDatabase"DeepLoad="True" Optional="False" Category="01. GettingStarted - Required" Description="Database that the tables views, and storedprocedures should be based on. IMPORTANT!!! If SourceTables and SourceViews areleft blank, the Entire Database will then be generated."%>
7. 好啦,拥有连接数据库,然后还必须 一个模版,为了更好地方便管理,大家新创建一个文档用以设计模版,File—New—Blank Template,并加上如下所示编码,最好是储存到test.cst所属的文件夹名称内,取名为Entity.cst:
<%@ CodeTemplateInherits="CodeTemplate"TargetLanguage="Text" Description="NetTiers main template."Debug="True" ResponseEncoding="UTF-8"%>
<%@ AssemblyName="SchemaExplorer" %>
<%@ ImportNamespace="SchemaExplorer" %>
<%-- 要打印出的表 --%>
<%@ PropertyName="Table" DeepLoad="True"Optional="False" Category="01. Getting Started - Required"Description="Database that the tables views, and stored procedures shouldbe based on. IMPORTANT!!! If SourceTables and SourceViews are left blank, theEntire Database will then be generated." %>
然后再次加上如下所示编码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Entity
{
publicpartialclass<%= Table.Name%>
{
<%foreach(ColumnSchema col inTable.Columns){ %>
public<%= col.DataType %><%=col.Name %>{ get;set; }
<% } %>
}
}
<%=Table.Name%> 表明在这里输出表的名字
<%foreach(ColumnSchema col in Table.Columns){ %> <% } %> 为for语句,在{}循环系统輸出列信息内容.
<%=col.DataType %> 表明在这里輸出列的种类
<%=col.Name %> 表明在这里輸出列的名字
如下图所示:
8. 模版建立好后,要在test.cst文档中申请注册一下,要不然别人如何判断有了你那么一个模版存有呀,在test.cst文档再次键入如下所示编码:
<%-- 申请注册实体线层Entity模版 --%>
<%@ RegisterName="EntityTemplate" Template=" Entity.cst"MergeProperties="Flase" ExcludeProperties=""%>
9. 好啦,模版申请注册好啦,依据CodeSmith原理,我们要融合模版和数据库查询构造来大批量转化成编码啦,可是大家转化成的总体目标文档要輸出到哪里呢?这时候大家会想要一个客户自定特性,用以设定总体目标文档的輸出文件目录,在test.cst文档的结尾键入如下所示编码:
10. 如今连輸出文件目录也拥有,该想办法写些涵数来进行将数据库查询构架传送给模版的工作啦,在test.cst文档的结尾键入如下所示编码:
CodeTemplateTemplate = new EntityTemplate(); 便是建立了一个新的模版
foreach(TableSchematable in this. SourceDatabase.Tables){} 表明循环系统輸出数据库查询中的表
Template.SetProperty("Table",table); 便是向模版设定特性,你是否还记得我们在Entity.cst里边设定了一个Table特性吗,大家是根据这些方式 给这一特性设值的.
Template.RenderToFile(FileDirectory,true); 表明将Temlate里的內容所有輸出到FileDirectory文件目录中,true表明假如文档存有立即遮盖.
11. 涵数写好啦,离取得成功很近啦,我们在test.cst的最终再加上如下所示编码,用以启用刚写好的涵数.到此,模版文档的制做早已进行.
<%
//建立实体线层Entity类
this.GenerateEntityClasses();
Debug.WriteLine("OK");
%>
12. 好了,如今只需设定我们要导出来的数据库查询和輸出文件目录就可以运作看結果啦,点一下CodeSmith主文本框右下方Properities控制面板中SourceDatabase特性栏上方的…按键,弹出来数据库查询设定提示框,我们要在这里加上一个新的连接数据库:
13. 点一下Add按键,特性设定如图所示,大家挑选的是在前一章用PowerDesigner建立好的PD_test数据库查询:
14. 点一下OK,返回数据库查询挑选提示框,挑选刚建立好的连接数据库:
15. 然后是设定总体目标文档輸出文件目录,我在这设定为桌面上的一个加密文件夹:
16. OK,万事具备,能够点一下运作按键让CodeSmith为大家大批量转化成编码啦:
开启转化成的文档,就可以见到大家希望见到的编码啦:
好啦,这种是基本,可是如果你把握了这种就可以逐渐自身的CodeSmith之行啦,因为我只有送大伙儿到此咯~别的大量的知识要点期待我们能自主查询协助文章内容或是网上查看,很高兴又和各位介绍了自个的一点体会心得,下面想再回过头备考一下策略模式,也准备写一些文章内容,热烈欢迎各位关心~
标签:CodeSmith
相关推荐
你 发表评论:
欢迎- 软件教程排行
- 最近发表