代码生成器 CodeSmith 的使用(一)
由于在项目中经常要会用到数据库的 CRUD 操作(增、删、改、查),而且还使用的是orm
框架将数据库表名和表中的的字段映射成相应的类属性。如果把大量的时间用到手工输入数据库表中的字段,除了能练习打字速度外,对软件工程师来说,对编程能
力的提高似乎没有什么意义,为了提高开发效率,节省时间,我工作之余花了大量的时间来学习研究CodeSmith
在生成数据库表中字段的模板的设计,在此记下自己的 CodeSmith 学习笔记。
这是新建的一个 CsharpTemplate.cst 模板文件的内容
<%--
Name:
Author:
Description:
--%>
<%@ Template Language="C#" TargetLanguage="Text" %>
<%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
<%@ Property Name="SampleBooleanProperty" Default="True" Type="System.Boolean" %>
My static content here.
My dynamic content here: "<%= SampleStringProperty %>"
Call a script method: <%= SampleMethod() %>
<% if (SampleBooleanProperty) { %>
My conditional content here.
<% } %>
<script runat="template">
// My methods here.
public string SampleMethod()
{
return "Method output.";
}
</script>
开头的是注释, 表示文件的作者,名称和功能描述
接下来 <%@ Template Language="C#" TargetLanguage="Text" %> 就是模板的说明内容
<%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
这
是属性类型的设置 它会生成一个 System.String 类型的字段 默认的值被设置成 SomeValue
Name是属性模板的名称,这个可以自命名, 模板的东西通常会放在 <% %> 里面,是成对出现的。比如要输出
System.String 类型的值,就要这么写
My dynamic content here: "<%= SampleStringProperty %>", 注意在<%> 前有个=号, 前面的 ”My dynamic content here“ 完全可以根据实际的需要来修改
在 模板中写代码片段时,也是放在 <%> 中的, 像例子中的这个 <% if (SampleBooleanProperty) { %>
My conditional content here.
<%
} %> 是一个 if语句判断, 如果是 true ,就会输出 My conditional content here.,注意:
花括号{ 也要放在 <%>内 花括号与花括号不能直接相邻,如果是 一个函数, 则要放在 <script
runat="template"> </script>中, 此时的花括号可以相邻,书写方式同在C#中的 书写方式一致。
这段代码会生成这样一个输出:
My static content here.
My dynamic content here: "SomeValue"
Call a script method: Method output.
My conditional content here.
CodeSmith6.5.0 链接: 下载 CodeSmith 6.5.0 密码: 51ed
代码生成器 CodeSmith 的使用(一)的更多相关文章
- 代码生成器 CodeSmith 的使用(二)
在第一篇中,简单的介绍了 CodeSmith 的使用方法,这次做一个生成简单的数据库字段属性的模板.以下只粘贴主要的代码片段. <%-- Name: Copyright © Sun 2013-2 ...
- 代码生成器 CodeSmith 的使用(三)
在第二篇中,介绍了用 codesmith 生成数据库中的一些字段,可生成的属性不够简洁,这次对上一次的版本进行重构,生成一些简洁的属性访问器.代码如下: Camel 规则: <%-- Name: ...
- 代码生成器 CodeSmith 的使用(五)
在上一篇的版本中,我们使数据库中的单个表 生成 PetaPoco 构架下的 ORM 映射,这次呢,要使数据库中的所有的表 生成 PetaPoco 构架下的 ORM 映射. 首先来看完整的 Camel ...
- 代码生成器 CodeSmith 的使用(四)
在上一篇的版本中,我们生成了数据库中的字段,使生成的属性更加简洁,可读性也提高了很多,但都是钍对一个数据库的单个表,如果要将数据库中的所有 的表都生成相应的类,表中的字段也都生成属性,运行一次就可以将 ...
- 代码生成器 CodeSmith 的使用(六)
在上一篇的版本中,我们生成了数据库所有表中的字段,如果要使数据库中的单个表 生成 PetaPoco 构架下的 ORM 映射,使那怎么办.这是这篇博客的主要内容. 首先来看完整的 Camel 规则模板: ...
- ToolsCodeTemplate使用
最近学习使用CodeSmith代码生成器 CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率. 作用:CodeSmith ...
- 动软代码生成器 可用于生成Entity层,可更改模板 /codesmith 也可以
动软代码生成器官方下载地址:http://www.maticsoft.com/download.aspx 教程:http://jingyan.baidu.com/article/219f4bf7dfd ...
- CodeSmith 代码生成器
在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做 ...
- 完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案
问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写MySQL模板的时候,会发现一个问题:MySQL数据表中的列说明获取不到,也就是column ...
随机推荐
- JS禁止用F5键
//禁止用F5键 function document.onkeydown() { if ( event.keyCode==116) { event.keyCode = 0; event.cancelB ...
- Samsung_tiny4412(驱动笔记07)----spinlock,semaphore,atomic,mutex,completion,interrupt
/*********************************************************************************** * * spinlock,se ...
- 【linux】如何退出shell终端
退出shell终端: exit + 回车即可 清除当前屏幕信息 clear 不过clear只是将之前的命令向上隐藏啦...
- 2N7002
就相当于一个开关,当G>S的一定电压就导通,若没有达到就没有导通. 并且注意的是D脚不能直接接电压,中间要接一个电阻. 这用是G输入,S接地,D输出. 跟三极管差不多.分N和P
- L2-2 重排链表 (25 分)
给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2→⋯.例如:给定L为1→2→3→4→5→6,则输出 ...
- tarjan强联通分量(模板)
#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #inc ...
- hdu1224 dp(dp + 栈/父亲数组记录路径)
题意:给定 n 个城市的有趣度,并给出可以从那些城市飞到那些城市.其中第一个城市即起始城市同样也作为终点城市,有趣度为 0,旅行途中只允许按有趣度从低到高旅行,问旅行的有趣度最大是多少,并输出旅行路径 ...
- frameset的用法
碰到一个frameset的问题,因为我比较懒,就先从网上拿来一篇基础知识,呵呵,好记性不如烂笔头啊 所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 <FRAMESE ...
- 在Docker中运行crontab
在把自己的项目通过Docker进行打包时,由于项目中用到了crontab,不过使用到的基础镜像python:3.6-slim并没有安装这项服务,记录下在镜像中安装和配置crontab的过程. Dock ...
- nyoj 一笔画问题
一笔画问题 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画. 输入 第一行只有一个正整 ...