前两天调查了下自动生成工具MyGeneration和codesmith前一个版本已经不更新了后面一个太高级生成的代码包含了太多东西,没整明白。不过生成的xmlmapping很强大。所以干脆整合一下codesmith和动软的pojo。现版本的动态默认带了nhibernate的模版

表设计的时候最好不要带下划线之类的

一、配置下要用的namespace和表名大小写

二、因为我用的是mysql所以表名默认在windows环境下是小写,不符合编码的规范,所以小改了下模版把首字母大写其它小写参照

http://www.cnblogs.com/freshman0216/archive/2010/10/02/1840750.html

<#@ template language="c#" HostSpecific="True" #>
<#@ output extension= ".cs" #>
<#TableHost host = (TableHost)(Host);host.Fieldlist.Sort(CodeCommon.CompareByintOrder);
#>
using System;//Nhibernate Code Generation Template 1.0
//author:MythXin
//blog:www.cnblogs.com/MythXin
//Entity Code Generation Template
namespace <#= host.NameSpace #>.Entity<# if( host.Folder.Length > 0) {#>.<#= host.Folder #><# } #>
{<# if( host.TableDescription.Length > 0) {#>//<#= host.TableDescription #><# } #>[Serializable]public class <#= host.GetModelClass(host.TableName.Substring(0, 1).ToUpper() + host.TableName.Substring(1).ToLower()) #> : EntityBase{<# foreach (ColumnInfo c in host.Fieldlist){ #>/// <summary>/// <#= string.IsNullOrEmpty(c.Description)  ? c.ColumnName : c.Description #>/// </summary>public virtual <#= CodeCommon.DbTypeToCS(c.TypeName) #><# if(c.Nullable) {  #><#if(CodeCommon.isValueType(CodeCommon.DbTypeToCS(c.TypeName
))){ #>?<# }#><# }#> <#= c.ColumnName.Substring(0, 1).ToUpper() + c.ColumnName.Substring(1).ToLower() #>{get; set; }        <# } #>}
}

c#的substring带2个参数的方法和java不太一样,
java和c#中的substring
如果只有一个参数,意思是一样,取该索引之后的全部字符

如果有2个参数。Java 的substring第二个参数表示索引号,实际取值是索引号的前一位; C# 的Substring方法第二个参数表示取子字符串的长度

host.GetModelClass()方法是动软命名规则里面的设置。比如命名规则设置首字母大写那生成的时候就会首字母大写,但是不满足驼峰形类名所以又修改了下:如果前面没有配置命名规则则把下面的host.GetModelClass()去掉自己ToUpper就可以了

<#@ template language="c#" HostSpecific="True" #>
<#@ output extension= ".cs" #>
<#
TableHost host = (TableHost)(Host);
host.Fieldlist.Sort(CodeCommon.CompareByintOrder);
#>
using System;
//Nhibernate Code Generation Template 1.0
namespace <#= host.NameSpace #>.Entity<# if( host.Folder.Length > 0) {#>.<#= host.Folder #><# } #>
{
[Serializable]
public class <#= host.GetModelClass(host.TableName.Substring(0, 1).ToUpper())
#><# int index=host.TableName.IndexOf("_");
#><# if(index!=-1){
if(host.TableName.Length>(index+1)){
#><#=host.TableName.Substring(1,index-1)+host.TableName.Substring(index+1,1).ToUpper()+host.TableName.Substring(index+2)
#><#     }else {
}
}else {
#><#=host.TableName.Substring(1).ToLower() #><# }  #>  : EntityBase
{
<# foreach (ColumnInfo c in host.Fieldlist)
{ #>/// <summary>
/// <#= string.IsNullOrEmpty(c.Description)  ? c.ColumnName : c.Description #>
/// </summary>
public virtual <#= CodeCommon.DbTypeToCS(c.TypeName) #><# if(c.Nullable) {  #><#if(CodeCommon.isValueType(CodeCommon.DbTypeToCS(c.TypeName
))){ #>?<# }#><# }#> <#= c.ColumnName.Substring(0, 1).ToUpper() + c.ColumnName.Substring(1) #>
{
get;
set;
}
<# } #>
}
}

三、用codesmith生成的xml配置文件要注意,默认是会忽略表中字段名的前缀的类似 表名product 字段名为productid   生成的xml文件中的属性就会变成 id

还有一个问题就是生成的文件名还是小写的。。。可能要改动软的生成文件的地方

CodeMatic动软自动生成Nhibernate相关推荐

  1. 动软Model 模板 生成可空类型字段

    动软代码 生成可空类型 <#@ template language="c#" HostSpecific="True" #> <#@ outpu ...

  2. 快速生成NHibernate的映射文件和映射类的利器 —— codesmith软件

    1.     Codesmith软件简介 (1) Codesmith软件是一种基于模板的代码生成工具,在ORM中,它能帮助我们生成实体类.XML配置文件,从而简化了我们一部分的开发工作,它的使用类似于 ...

  3. Nhibernate代码自动生成工具[转]

    最近在研究使用Nhibernate,为写大量打代码和映射搞得头痛. 所以决定写个Nhibernate的代码生成器. 由于以前使用过动软代码生成器他的代码生成功能和模板定制功能都很强大,所以决定基于动软 ...

  4. 如何通过DCGAN实现动漫人物图像的自动生成?

    深度学习领域在近几年取得了重大突破,其中大部分研究成果都基于感知技术,计算机通过模仿人类的思维方式,感知物体.识别内容.生成对抗网络的理念由Goodfellow于2014年提出的,它的发展历程只有六年 ...

  5. 基础 | 如何通过DCGAN实现动漫人物图像的自动生成?

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 文章来源:淘系技术 背景 基于生成对抗网络(GAN)的动漫人物生成近年来兴起的动漫 ...

  6. mybatis自动生成的html,MyBatisPlus-自动生成代码

    根据数据表自动生成实体类.Mapper.Service.ServiceImpl.Controller 一.依赖 1.pom.xml 导入 MyBatis Plus Generator com.baom ...

  7. 帆软填报报表实现日期自动生成总结

    帆软填报报表实现日期自动生成总结 文章目录 帆软填报报表实现日期自动生成总结 业务需求 思考过程 使用sysdate 使用触发器 V1 版本 创建时间设置 更新时间设置 填报报表设置 小bug修复 V ...

  8. 语音识别插件_2D动画唇动合成,根据语音自动生成动画人物口型

    蕾师师 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只需要输入一段语音,代码会自动生成与之相对的动画唇形. 还是毫无违和感的那种. 这是一个在GitHub上拥有501星的开源项目,叫做Rhu ...

  9. 2D动画唇动合成,根据语音自动生成动画人物口型

    蕾师师 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只需要输入一段语音,代码会自动生成与之相对的动画唇形. 还是毫无违和感的那种. 这是一个在GitHub上拥有501星的开源项目,叫做Rhu ...

  10. 动软代码生成器教程——懒人有福了

    很多时候项目必须是三层架构模式,但是很多繁琐的代码让多数程序员闹心--那有没有一个省时省力的工具快速的帮我们搞定三层架构呢?回答是肯定的,很早之前技术牛人李天平就开发出了这么一款工具,目前该工具还在不 ...

最新文章

  1. linux运维、架构之路-MySQL(一)
  2. erlang mysql driver_erlang_mysql_driver 源码分析2
  3. 【PAT】B1048 数字加密
  4. mysql9索引实战_mysql 索引实战 | 学步园
  5. python删除重复文字_python如何删除文件中重复的字段
  6. html字体加大标签与写法介绍
  7. HashMap get不出对象时出错 解决
  8. 企业如何快速应对市场环境的不断变化
  9. ST众泰:未与长城汽车签署过任何战略协议
  10. 《众妙之门——用户体验设计的秘密》一2.3 触摸至上的设计
  11. python123词频统计之哈姆雷特_基于Yarn的Spark环境,统计哈姆雷特词频(1)-阿里云开发者社区...
  12. 【2019-08-18】时间是有密度的
  13. python中https请求的封装_python接口自动化9-https请求(SSL)
  14. Charles抓包:APP抓包工具配置手机代理证书
  15. 小组取什么名字好_2020鼠年男孩取什么名字好
  16. Win11无法识别以太网怎么办?Win11以太网未识别网络的解决方法
  17. Windows10下安装VS2015和Caffe
  18. 一个C++的21点(BlackJack)游戏
  19. 奇迹gm工具 奇迹批量远程工具
  20. 如何用JAVA写acm_用java来写ACM

热门文章

  1. Win10安装程序修复计算机,directx修复工具win10最新版
  2. iTextSharp 列表
  3. UML统一建模语言(UML类图)
  4. 在线电子名片html,HTML5 个人信息卡片(电子名片)模板
  5. X230 安装 EI Capitan 10.11.5 驱动篇
  6. Python利用模糊查询两个excel文件数据 导出新表格
  7. 控制系统--线性定常数系统的传递函数
  8. CS224N WINTER 2022(四)机器翻译、注意力机制、subword模型(附Assignment4答案)
  9. 直角三角形用计算机怎么做,‎App Store 上的“直角三角形计算器”
  10. lnmp一键安装升级PHP版本