DataUml Design 教程5-代码模板介绍(甚于T4模板技术)
DataUml Design 代码模板全然基于C#语言来编写的。
不懂写模板的能够请教作者,随时欢迎。
以下是一段模板代码,这段代码能够获取一个类结构的全部信息。
<#@ template language="C#" HostSpecific="True" #>
<#
NetUmlTemplateCodeHost host = (NetUmlTemplateCodeHost)(Host);
#>
命名空间:<#= host.ClassProperty.Namespace #>
类名:<#= host.ClassProperty.ClassName #>
类中文名:<#= host.ClassProperty.ClassOtherName #>
表名:<#= host.ClassProperty.TableName #>
可訪问性:<#= host.ClassProperty.Accessibility==null?"":host.ClassProperty.Accessibility #>
修饰符:<#= host.ClassProperty.Modifier==null?"":host.ClassProperty.Modifier #>
用户:<#= host.ClassProperty.User==null?
"":host.ClassProperty.User #>
备注:<#= host.ClassProperty.Remarks #>
数据库类型:<#= host.ClassProperty.DataAccessType #>
语言:<#= host.ClassProperty.ProjectLanage #>
字段:
<# foreach(var f in host.ClassProperty.Fields)
{
WriteLine(" 属性名:"+f.PropertyName);
WriteLine(" 属性别名:"+f.PropertyOtherName);
WriteLine(" 属性类型:"+f.DataType);
WriteLine(" 修饰符:"+f.Modifier);
WriteLine(" 可訪问性:"+f.Accessibility);
WriteLine(" 是否空类型:"+f.IsNullType);
WriteLine(" 初始值:"+f.InitialValue);
WriteLine(" 是否仅仅读:"+f.IsReadable);
WriteLine(" 是否可写:"+f.IsWritable);
WriteLine(" 字段名:"+f.FieldName);
WriteLine(" 字段类型:"+f.FieldType);
WriteLine(" 长度:"+f.FieldLength);
WriteLine(" 是否为空:"+f.IsNull);
WriteLine(" 是否主键:"+f.IsPrimaryKey);
if(f.IsPrimaryKey)
{
WriteLine(" 主键类型:"+f.PrimaryKeyType);
}
WriteLine(" 是否外键:"+f.IsForeignKey);
WriteLine(" 默认值:"+f.DefaultValue);
WriteLine(" 备注信息:"+f.Remarks);
)
{
WriteLine(" 属性:");
foreach(var p in f.Attributes)
{
WriteLine(" 属性名:"+p.AttributeName);
WriteLine(" 属性值:"+p.AttributeValue);
}
}
WriteLine(" ----------------");
}
#>
类成员:
表键信息:
<# foreach(var k in host.ClassProperty.FieldKeyPropertys)
{
WriteLine(" 键名:"+k.KeyName);
WriteLine(" 键类型:"+k.KeyType);
WriteLine(" 字段:"+k.KeyFieldName);
WriteLine(" 字段别名:"+k.KeyFieldOtherName);
if(k.KeyType==KeyType.FOREIGN_KEY)
{
WriteLine(" 约束名:"+k.ConstraintName);
WriteLine(" 约束表名:"+k.ConstraintTable);
WriteLine(" 约束表别名:"+k.ConstraintTableOtherName);
WriteLine(" 约束字段:"+k.ConstraintFields);
WriteLine(" 约束字段别名:"+k.ConstraintFieldsOtherName);
}
WriteLine("----------------");
}
#>
关联的类信息:
<# foreach(RelationClass c in host.ClassProperty.RelationClasss)
{
WriteLine(" 关联类名:"+c.ClassProperty.ClassName);
WriteLine(" 关联名称:"+c.RelationName);
WriteLine(" 关联类型:"+c.TableRelationType);
WriteLine(" UML关联类型:"+c.UmlRelationType);
WriteLine(" IsConnectionLineStart:"+c.IsConnectionLineStart);
WriteLine(" IsConnectionLineEnd:"+c.IsConnectionLineEnd);
foreach(var f in c.RelationFields)
{
]+]);
}
]+]);
WriteLine( "----------------");
}
#>
解说
<#@ template language="C#" HostSpecific="True" #>
<#
NetUmlTemplateCodeHost host = (NetUmlTemplateCodeHost)(Host);
#>
这段代码是必须的,它申明模板是採用哪种语言。
在模板里能够全然訪问NetUmlTemplateCodeHost
类里面的信息。这个类里面有个属性ClassProperty,这个属性包含模型中一个类的全部信息。
<# #>
全部语法代码都在这个符号里写
host.ClassProperty.Fields中Fields属性是个集合,它包含全部字段信息
以下是循环一个类中全部字段
<# foreach(var f in host.ClassProperty.Fields)
{
}
#>
DataUml Design 教程5-代码模板介绍(甚于T4模板技术)的更多相关文章
- DataUml Design 教程4-代码生成
DataUml Design 生成代码非常灵活,它是基于模板形式生成代码,如果不懂类结构的话写模型就比较困难了.这里我只讲解下如何生成代码,代码模板规则下一节将介绍. 1 ...
- DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)
从DataUML Design正式公布到如今有两个月了.因为近期比較忙,到如今才公布1.1版本号. 以后本人会一直坚持不断完好DataUML Design软件,希望广大程序员们多多支持. 一.1.1版 ...
- DataUml Design 教程7 - 数据库生成模型
DataUml Design支持数据库生成模型,并支持外键关系,能够根据外键自动生成类与类之间的关系. 目前DataUML Design支持MS Server.MY SQL.Oracle和Access ...
- DataUml Design 教程6-DataUML Design 1.1版本正式发布(支持PD数据模型)
从DataUML Design正式发布到现在有两个月了,由于最近比较忙,到现在才发布1.1版本.以后本人会一直坚持不断完善DataUML Design软件,希望广大程序猿们多多支持. 一.1.1版本新 ...
- DataUml Design 教程1-初识
DataUml Design 是面向开发人员使用的一个永久免费的软件,提高软件的开发效率和代码的规范度.它主要包括三大功能,数据模型.代码生成和UML建模,数据模型功能类似于PowerDesi ...
- DataUml Design 教程3-模型与数据库同步
上一节我们已经建立好了数据模型,那么怎么让数据模型和数据库进行同步呢?模型同步到数据库非常简单,只需要模型绑定到数据库即可.DataUml Design目前支持和Oracle与MS Server数据库 ...
- DataUml Design 教程2-实体建模
DataUml Design 实体建模基于UML类图标准来设计,支持一对一.一对多.多对多关联.模型与开发语言和数据库绑定.1.新建数据模型 1).选择“数据模型” 节点,点击鼠标右键,在菜单中 ...
- DataUml Design 介绍10 - DataUML 1.4版本功能(增加UML活动图和用例图)
DataUml Design 1.4版本正式发布 1.解决软件自动关闭的问题 2.增加UML活动图和用例图功能 详细介绍稍后继续...........................
- DataUml Design 课程6-DataUML Design 1.1版本号正式宣布(支持PD数据模型)
从DataUML Design正式宣布到现在两个月,因为最近忙,出版到现在为止1.1版本号.稍后我们将始终坚持以良好DataUML Design软件,我希望程序员有很多支持. 一.1.1新的和改进的版 ...
随机推荐
- poj 2846 Repository
题目大意:给你n个字符串,然后给你m个子串,看这个子串在上面的多少个串中,出现过: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2846 本题可以在字 ...
- cocos2dx错误收集
1.读取ccb文件onNodeLoaded调用两次的问题 不小心把cocosbuilder里的控件的Custom class里填了两次自定义类,如下: 结果在onNodeLoaded时调用了两次,结果 ...
- 小型web服务器thttpd的学习总结(下)
1.主函数模块分析 对于主函数而言,概括来说主要做了三点内容,也就是初始化系统,进行系统大循环,退出系统.下面主要简单阐述下在这三个部分,又做了哪些工作呢. 初始化系统 拿出程序的名字(argv[0] ...
- Linux平台使用Freetds连接SQL Server服务器,兼容PHP和Laravel
本文在CentOS 7 64bit和Laravel 4.2环境测试通过. 1.下载源码并解压缩 wget ftp://ftp.freetds.org/pub/freetds/stable/free ...
- Confusing Date Format UVALive 7711 给定mm-mm-mm格式的时间。年份(1900-1999)只给了后两位数,问有多少种合法的排列使时间正确。
/** 题目:Confusing Date Format UVALive 7711 链接:https://vjudge.net/contest/174844#problem/A 题意:给定mm-mm- ...
- Linux上创建SSH隧道
Win上有好用的Xshell,可以做SSH隧道,但是Linux没有很好用的工具,本来gSTM还可以,但是死活装不上,也很久没更新了. 但其实,Linux上直接使用ssh命令就可以创建SSH隧道,非常方 ...
- 04 Java图形化界面设计——布局管理器之BorderLayout(边界布局)
边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...
- windows server 服务器添加免费域名证书的方法(Let's Encrypt)
在 windows server 服务器上可以通过 win-acme工具添加ssl 1.首先下载工具 https://github.com/PKISharp/win-acme/releases 最新版 ...
- Windows下通过Composer安装Yii2
安装好大于5.4或更高版本的PHP环境并开启openssl扩展.如果是Apache服务器,加载Apache的mod_ssl模块. 下载Composer并安装. 开始->运行[或者WIN+R]-& ...
- Hadoop1的安装
目前hadoop1的稳定版本是1.2.1,我们以版本1.2.1为例详细的介绍hadoop1的安装,此过程包括OS安装与配置,JDK的安装,用户和组的配置,这些过程在hadoop2也有可能用到. Had ...