在第一篇中,简单的介绍了 CodeSmith 的使用方法,这次做一个生成简单的数据库字段属性的模板。以下只粘贴主要的代码片段。

<%--
Name: Copyright © Sun 2013-2014 All rights reserved
Contact me: Sunnydayhu@163.com
Author: SpringFileld
Description: 遍历数据库中的表,并映射成类的属性 Camel规则的写法
DateTime: 2014-07-31
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %> <% foreach (ColumnSchema column in this.SourceTable.Columns) { %>
private <%= CSharpAlias[column.SystemType.FullName] %> _<%=StringUtil.ToCamelCase(column.Name) %>; public <%= CSharpAlias[column.SystemType.FullName] %> <%= StringUtil.ToCamelCase( column.Name) %>
{
get { return _<%=StringUtil.ToCamelCase(column.Name) %>; }
set { _<%=StringUtil.ToCamelCase(column.Name) %> = value; }
} <% } %>

生成的效果如下:(Camel规则的写法)

private string _sheetNo;

public string sheetNo
{
get { return _sheetNo; }
set { _sheetNo = value; }
} private decimal _sheetAmt; public decimal sheetAmt
{
get { return _sheetAmt; }
set { _sheetAmt = value; }
} private System.DateTime _operDate; public System.DateTime operDate
{
get { return _operDate; }
set { _operDate = value; }
} private string _settleFlag; public string settleFlag
{
get { return _settleFlag; }
set { _settleFlag = value; }
} private string _transNo; public string transNo
{
get { return _transNo; }
set { _transNo = value; }
}

Pascal 规则模板代码:

<%--
Name: Copyright © Sun 2013-2014 All rights reserved
Contact me: Sunnydayhu@163.com
Author: SpringFileld
Description: 遍历数据库中的表,并映射成类的属性 Pascall 规则
DateTime: 2014-07-31
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %> <% foreach (ColumnSchema column in this.SourceTable.Columns) { %>
private <%= CSharpAlias[column.SystemType.FullName] %> _<%=StringUtil.ToPascalCase(column.Name) %>; public <%= CSharpAlias[column.SystemType.FullName] %> <%= StringUtil.ToPascalCase( column.Name) %>
{
get { return _<%=StringUtil.ToPascalCase(column.Name) %>; }
set { _<%=StringUtil.ToPascalCase(column.Name) %> = value; }
} <% } %>

Pascal 规则生成结果:

private string _SheetNo;

public string SheetNo
{
get { return _SheetNo; }
set { _SheetNo = value; }
} private decimal _SheetAmt; public decimal SheetAmt
{
get { return _SheetAmt; }
set { _SheetAmt = value; }
} private System.DateTime _OperDate; public System.DateTime OperDate
{
get { return _OperDate; }
set { _OperDate = value; }
} private string _SettleFlag; public string SettleFlag
{
get { return _SettleFlag; }
set { _SettleFlag = value; }
} private string _TransNo; public string TransNo
{
get { return _TransNo; }
set { _TransNo = value; }
}

原生的属性写法(生成的属性字段的大小写与数据库中的字段的大小写完全相同)

<%--
Name: Copyright © Sun 2013-2014 All rights reserved
Contact me: Sunnydayhu@163.com
Author: SpringFileld
Description: 遍历数据库中的表,并映射成类的属性 原生的写法
DateTime: 2014-07-31
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %> <% foreach (ColumnSchema column in this.SourceTable.Columns) { %>
private <%= CSharpAlias[column.SystemType.FullName] %> _<%= column.Name %>; public <%= CSharpAlias[column.SystemType.FullName] %> <%= column.Name %>
{
get { return _<%= column.Name %>; }
set { _<%= column.Name %> = value; }
} <% } %>

原生的属性写法生成的效果:

private string _sheet_no;

public string sheet_no
{
get { return _sheet_no; }
set { _sheet_no = value; }
} private decimal _sheet_amt; public decimal sheet_amt
{
get { return _sheet_amt; }
set { _sheet_amt = value; }
} private System.DateTime _oper_date; public System.DateTime oper_date
{
get { return _oper_date; }
set { _oper_date = value; }
} private string _settle_flag; public string settle_flag
{
get { return _settle_flag; }
set { _settle_flag = value; }
} private string _trans_no; public string trans_no
{
get { return _trans_no; }
set { _trans_no = value; }
}

总结:

如果要改成 Pascal 规则的写法,
只要将StringUtil.ToCamelCase(column.Name) 改成
StringUtil.ToPascalCase(column.Name)即可,
若不想用这两种规则,生成原生的字段属性,可以写成column.Name 去掉
StringUtil.ToCamelCase() 和 StringUtil.ToPascalCase() 方法

代码生成器 CodeSmith 的使用(二)的更多相关文章

  1. XML代码生成器——XMLFACTORY 简介(二)

    XML代码生成器——XMLFACTORY 简介(二)      因为春节和项目上线的原因,离写上一篇文章的时间已经好久了. 不知道是事情太多了,还是自已效率太低了.总之是时间不够用. 哎,苦逼的程序员 ...

  2. CodeSmith 基本语法(二)

    CodeSmith之四 - 典型实例(四) CodeSmith API文档 (三) CodeSmith 基本语法(二) CodeSmith 图形界面基本操作(一) CodeSmith的C#语法与Asp ...

  3. java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码

    .   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限      角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.      按钮权限: 给角色分配按钮权限.2 ...

  4. 代码生成器 CodeSmith 的使用(一)

    由于在项目中经常要会用到数据库的 CRUD 操作(增.删.改.查),而且还使用的是orm 框架将数据库表名和表中的的字段映射成相应的类属性.如果把大量的时间用到手工输入数据库表中的字段,除了能练习打字 ...

  5. 代码生成器 CodeSmith 的使用(三)

    在第二篇中,介绍了用 codesmith 生成数据库中的一些字段,可生成的属性不够简洁,这次对上一次的版本进行重构,生成一些简洁的属性访问器.代码如下: Camel 规则: <%-- Name: ...

  6. 代码生成器 CodeSmith 的使用(五)

    在上一篇的版本中,我们使数据库中的单个表 生成 PetaPoco 构架下的 ORM 映射,这次呢,要使数据库中的所有的表 生成 PetaPoco 构架下的 ORM 映射. 首先来看完整的 Camel ...

  7. 代码生成器 CodeSmith 的使用(四)

    在上一篇的版本中,我们生成了数据库中的字段,使生成的属性更加简洁,可读性也提高了很多,但都是钍对一个数据库的单个表,如果要将数据库中的所有 的表都生成相应的类,表中的字段也都生成属性,运行一次就可以将 ...

  8. 代码生成器 CodeSmith 的使用(六)

    在上一篇的版本中,我们生成了数据库所有表中的字段,如果要使数据库中的单个表 生成 PetaPoco 构架下的 ORM 映射,使那怎么办.这是这篇博客的主要内容. 首先来看完整的 Camel 规则模板: ...

  9. CodeSmith开发系列资料总结

    CodeSmith开发系列资料总结 最近跟同事在研究CodeSmith,感觉中文文档是少之又少,所以我们自己写(翻译)了一些文档,总结如下,希望对使用CodeSmith的朋友有所帮助: “努力学习的熊 ...

随机推荐

  1. ElasticSearch—分页查询

    ElasticSearch查询—分页查询详解 Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如何实现分页查询呢? 按照一般的查询流程来说,如 ...

  2. SharePoint PeopleEditor控件使用

    以下用于简要介绍在SharePoint 2016二次开发中如何使用PeopleEditor人员选择器,并采用前端的方式获取和设置值. 一.在使用的.aspx页面进行注册 <%@ Register ...

  3. hasura graphql-engine v1.0.0-alpha26 版本新功能

    hasura 发布了graphql-engine v1.0.0-alpha26 版本,有一些破坏的变动,以及方便的新特性 破坏性变动 order_by 从 order_by: id_asc 为 ord ...

  4. var_dump() 格式化输出 | 显示不全

    PHP 使用‘var_dump($var)’时 没有格式化输出,显得乱糟糟的.原因是没有启用‘XDebug’扩展 [php.ini] ; XDEBUG Extension zend_extension ...

  5. ereg()替换为preg_match(),ereg_repalce替换为preg_replace得加斜杠

    PHP 5.3 ereg() 无法正常使用,提示“Function ereg() is deprecated Error”是因为它长ereg 函数进行了升级处理,需要像preg_match使用/ /来 ...

  6. spring 注解列表

    table th:first-of-type { width: 15%; } table th:nth-of-type(2) { } 注解 作用 例子 @SuppressWarnings 忽略警告 类 ...

  7. position:relative与position:absolute 区别

    relative:相对于它本身原来的位置进行偏移(配合 right left bottom top属性进行偏移) 他偏移会空出来一些空白 其余的html元素不会填充这些空白 absolute:相对于同 ...

  8. 什么是Asp.net Core?和 .net core有什么区别?(转)

    什么是Asp.Net core 我相信很多C# Developer已经对于.net core不算陌生了,就算没有正式使用相信也应该有所了解.微软在推出来.net core的同时为了方便一些原有的项目可 ...

  9. 【python】专用下划线标识符说明

    __xxx__:系统定义名字 __xxx:类中私有变量名 说明:__xxx看做“私有的”,在模块或者类外是不可以使用.

  10. dede 添加自定义函数

    include/extend.func.php里添加函数 function GetTopTags($str){$dsql = new Dedesql(false);$row = $dsql->G ...