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模板技术)的更多相关文章

  1. DataUml Design 教程4-代码生成

            DataUml Design 生成代码非常灵活,它是基于模板形式生成代码,如果不懂类结构的话写模型就比较困难了.这里我只讲解下如何生成代码,代码模板规则下一节将介绍.        1 ...

  2. DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)

    从DataUML Design正式公布到如今有两个月了.因为近期比較忙,到如今才公布1.1版本号. 以后本人会一直坚持不断完好DataUML Design软件,希望广大程序员们多多支持. 一.1.1版 ...

  3. DataUml Design 教程7 - 数据库生成模型

    DataUml Design支持数据库生成模型,并支持外键关系,能够根据外键自动生成类与类之间的关系. 目前DataUML Design支持MS Server.MY SQL.Oracle和Access ...

  4. DataUml Design 教程6-DataUML Design 1.1版本正式发布(支持PD数据模型)

    从DataUML Design正式发布到现在有两个月了,由于最近比较忙,到现在才发布1.1版本.以后本人会一直坚持不断完善DataUML Design软件,希望广大程序猿们多多支持. 一.1.1版本新 ...

  5. DataUml Design 教程1-初识

        DataUml Design 是面向开发人员使用的一个永久免费的软件,提高软件的开发效率和代码的规范度.它主要包括三大功能,数据模型.代码生成和UML建模,数据模型功能类似于PowerDesi ...

  6. DataUml Design 教程3-模型与数据库同步

    上一节我们已经建立好了数据模型,那么怎么让数据模型和数据库进行同步呢?模型同步到数据库非常简单,只需要模型绑定到数据库即可.DataUml Design目前支持和Oracle与MS Server数据库 ...

  7. DataUml Design 教程2-实体建模

    DataUml Design 实体建模基于UML类图标准来设计,支持一对一.一对多.多对多关联.模型与开发语言和数据库绑定.1.新建数据模型    1).选择“数据模型” 节点,点击鼠标右键,在菜单中 ...

  8. DataUml Design 介绍10 - DataUML 1.4版本功能(增加UML活动图和用例图)

    DataUml Design 1.4版本正式发布 1.解决软件自动关闭的问题 2.增加UML活动图和用例图功能 详细介绍稍后继续...........................

  9. DataUml Design 课程6-DataUML Design 1.1版本号正式宣布(支持PD数据模型)

    从DataUML Design正式宣布到现在两个月,因为最近忙,出版到现在为止1.1版本号.稍后我们将始终坚持以良好DataUML Design软件,我希望程序员有很多支持. 一.1.1新的和改进的版 ...

随机推荐

  1. CCNA2.0笔记_动态路由

    动态路由协议: 向其他路由器传递路由信息 接收(学习)其他路由器的路由信息 根据收到的路由信息计算出到每个目的网络的最优路径,并由此生成并维护路由表 根据网络拓朴变化及时调整路由表,同时向其他路由器宣 ...

  2. 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标1077视频监控平台

    开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中 ...

  3. Hbase系列-Hbase简介

    自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案.大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像 Hadoop 的解决方案.Hadoop使用分布式文件系统,用于存储大数 ...

  4. C# 时间格式 yyyy/mm/dd

    今天遇到个问题在C#中将日期格式设置为yyyy/MM/dd,我是这样写的: DateTime.Now.ToString("yyyy/MM/dd"); 可是获取到的日期还是显示yyy ...

  5. C#版本的xUnit的测试框架模型和xUnit.NET开源项目

    1. 参考kent beck的测试驱动写的C#测试框架模型 a) 测试用例: WasRun, 基类为TestCase b) 框架: TestCaseTest用来测试TestCase,本身也是它的子类, ...

  6. 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结

    环境: Appium:1.9.1 Appium-desktop:1.7.1 Xcode:10.0 IOS:iPhone5S(10.3.3) Mac:10.13.6 ①获取手机屏幕size:长.宽 &l ...

  7. 使用AllocConsole()添加调试用控制台

    AllocConsole 函数 为调用进程分配一个新的控制台. 使用步骤: 1. AllocConsole(); //分配控制台 2. HANDLE  g_hOutput=GetStdHandle( ...

  8. iis 如何搭建url 重定向,实现无线端和pc端不同的跳转

    第一步,下载安装ARR(Application Request Routing), http://www.iis.net/downloads/microsoft/application-request ...

  9. java需要掌握内容、核心不断更新中

    1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该十分了解UML,尤其是class,object,interaction以及statediagra ...

  10. 微软2016校园招聘4月在线笔试 hihocoder 1289 403 Forbidden

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 Little Hi runs a web server. Sometimes he has to deny acces ...