对于.NET平台上的代码生成器来说,codesmith是一个非常好的选择。

以前在学院实验室用的都是SQL server数据库,老师给的一套codesmith模板用来生成model/DAL/BLL很是方便。

不过后来放弃SQL server 投入MySQL之后,刚开始都是手写SQL,还是很痛苦的。

再后来又去找MySQL codesmith模板,这个对应的资料就不多了。不过最后还是找到了一套不错的,凑合能用。起初也懒,codesmith语法不熟,就没想过去修改一下了。

最近又要用到这套东西,于是决定还是去修改一番,更便于使用。

这个文章就主要讲一下修改过程,顺便说一下codesmith的简单语法。

先说一下操作步骤:

把模板的文件夹扔到codesmith模板文件的路径下,接着打开Codesmith,找到刚扔过去的文件夹,选择Main.cst,右键-execute-选择对应的MySQL库-选中表。

(注:codesmith连接MySQL有问题的话,

移步这里解决 CodeSmith 连接MySQL数据库报“can’t find .net framework data provider”

如下图:

然后点击Generate就能顺利生成model/dal/bll了。

生成代码结构如下:

这样操作没什么问题,顺利生成了我们要的model/dal/bll了,然后….我懒嘛。 每次都要把表一个个选一次,麻不麻烦啊。然后就想了,能不能改一下模板呢。于是便开始google相关资料了。找到了几个相关文章,参考这就开始改造了。 先看看原来的Main.cst里面写了撒。

这一段基本就是在声明选项以及引用命名空间,表现出来的便是我们看到的下图:

Models model = this.Create();

model.ModelsNamespace = this.RootNamespace+".Model";

model.TargetTable = this.SourceTable;

model.RenderToFile(this.OutputDirectory+"Model/"+model.GetFileName(),true);

DAL dal = this.Create();

dal.TargetTable = this.SourceTable;

dal.ModelsNamespace = model.ModelsNamespace;

dal.DALClassNameSurfix = "DAL";

dal.DALNamespace =this.RootNamespace+".DAL";

dal.RenderToFile(this.OutputDirectory+"DAL/"

+dal.GetFileName(),true);

BLL bll = this.Create();

bll.ModelsNamespace = model.ModelsNamespace;

bll.DALClassNameSurfix = dal.DALClassNameSurfix;

bll.DALNamespace = dal.DALNamespace;

bll.BLLClassNameSurfix = "BLL";

bll.BLLNamespace = this.RootNamespace+".BLL";

bll.TargetTable = this.SourceTable;

bll.RenderToFile(this.OutputDirectory+"BLL/"

+bll.GetFileName(),true);

Response.Write("ok,see "+this.OutputDirectory);

%>

这一段就是我们点击Generate之后执行的代码,基本功能就是调用

DBMad.Models.cst,DBMad.DAL.cst,DBMad.BLL.cst。

因为在上面声明数据源的时候,使用了SchemaExplorer.TableSchema,导致我们选择表的时候不能多选。代码如下:

前面一部分还是一样的声明,

这一段代码便是获取刚得到的表集合,遍历集合然后依次调用之前的单表生成模板。

到这里差不多已经完成了我要的效果,选择多表,实现一次生成所有的表对应的model/dal/bll。

这个效果基本就是我要的了,但是后来又发现,model里面的字段居然没有注释,我在建表的时候写了字段注释的呀。

打开model的cst文件之后发现,模板并没有做注释这个工作。

代码如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace

{

[Serializable()]

public class

{

private _;

public

{

get { return _; }

set { _ = value; }

}

}

}

获取表中字段名使用的是GetPropertyName(column),咦,在哪实现了这个东西呢?回去翻一下文件,哦,还有一个ToolsCodeTemplate.cs文一直没管呢。

果然,GetPropertyName(column)在这里。

public string GetPropertyName(ColumnSchema column)

{

return GetNameFromDBFieldName(column);

}

public string GetNameFromDBFieldName(ColumnSchema column)

{

return column.Name;

}

读取列名就是这么简单,那么我们对应写一个函数读取一下列注释,然后再model里面调用一下不好了。

又查了一下资料,

public string GetColumnComment(ColumnSchema column)

{

return column.Description;

}

嗯,理论上这样是可以的…

然而,我想多了。倒腾了好久,这个属性值都是空的…

google了一圈之后发现,原来是SchemaExplorer.MySQLSchemaProvider.dll 里面压根没实现读取列注释的实现….

不过也有对应的解决方法:

把DLL替换一下就好了。

注:

模板会把MySQL的表名前三个字符截取掉,建议把表明设置为tbl开头,或者自行修改模板文件。

想让字段注释生效记得替换SchemaExplorer.MySQLSchemaProvider.dll(替换前记得备份!)

codesmith mysql 模板_CodeSmith for MySQL template相关推荐

  1. MySQL--My.cnf配置文件模板 MYSQL AND MARIADB CONFIGURATION FILE TEMPLATE (MY.CNF/MY.INI)

    MySQL--My.cnf配置文件模板 Introduce The MySQL and MariaDB default configuration is not very great for prod ...

  2. 使用Zabbix自带MySQL模板监控MySQL

    使用Zabbix自带MySQL模板监控MySQL 1. 安装zabbix agent [root@szlinux02 ~]# rpm -ivh http://repo.zabbix.com/zabbi ...

  3. zabbix的mysql模板_使用Zabbix自带MySQL模板监控MySQL

    使用Zabbix自带MySQL模板监控MySQL 1. 安装zabbix agent[root@szzabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/ ...

  4. vapor mysql_基于Swift的Web框架Vapor2.0之MySQL模板

    前言 在Toolbox章节我们已经讲了Vapor的几种模板,可以点击以上链接去看. MySQL模板 创建基于API模板的Vapor项目 这篇文章我们来讲下,如何改造一个默认API模板成为一个MySQL ...

  5. 【Zabbix】使用zabbix 3.4自带Mysql模板,监控Redhat 7.0上的Mysql

    前言 使用zabbix监控Mysql. zabbix 3.4 zabbix server已安装完成(yum方式安装zabbix) Mysql服务器操作系统(OS) :Redhat 7.0 在Mysql ...

  6. mysql模板引擎_MYSQL存储引擎解释

    存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念, ​ MySQL支持多种存储引擎,每种引擎有着一些自己独特的功能,用户在使用的时候,可以根 ...

  7. myeclipse mysql连接_MyEclipse连接MySQL数据库图文教程

    这篇文章主要为大家详细介绍了MyEclipse连接MySQL数据库图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 自己在自学JavaEE课程时,在做一些小东西的时候,需要连接MySQL数据 ...

  8. mysql mpm_zabbix mpm 监控 mysql性能

    一.环境说明 zabbix 2.2 in Centos 6.4 64bit 二.MPM(MySQL Performance Monitor)安装 1.依赖模块 yum install perl-Fil ...

  9. liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/m ...

  10. 没有找到mysql。sock_linux系统安装mysql数据库

    1.首先关闭linux的防火墙,执行命令 chkconfig iptables off 2.从mysql官网上下载自己适合的mysql版本https://dev.mysql.com/downloads ...

最新文章

  1. 网站建设注重用户体验尤为重要
  2. MAC安装iterm2及配置
  3. mysql sys_connect_by_path_mysql中实现相仿oracle的SYS_CONNECT_BY_PATH功能
  4. C#—使用InstallerProjects打包桌面应用程序
  5. 【小白学习C++ 教程】十七、C++ 中的字符数组和字符串常见的函数
  6. SEO 百度后台主动推送链接
  7. arduinowifi.send怎么获取响应_ChatterBot代码解读-获取对话
  8. SPAW Editor .NET Edition v.2乱用:使用代码调整编辑器高度
  9. vfp 界面_VFP之老树新花
  10. [LeetCode] Balanced Binary Tree 平衡二叉树
  11. 做好4项防护,保障服务器安全
  12. C语言知识层次结构图
  13. 全球AI技术开放日系列5(上海站):走进爱奇艺
  14. android 修改已建工程的api版本,更改API级Android Studio
  15. python:在指定范围内按学号随机生成座位顺序,并分行输出
  16. 打开了ros中的rviz,显示不了机器人模型
  17. 个人计算机能力提升研修计划,教师计算机能力提升个人研修计划
  18. 3D EXPERIENCE DraftSight的协作能力
  19. webpy中使用session
  20. Android 11 适配更新APK安装

热门文章

  1. Python中用正则表达式搜索本地英汉词典,找到具有某种pattern的单词
  2. 最好用的免费搜题软件,一键聚合搜题!中小学、大学都支持
  3. 猿辅导李勇,狂烧百亿!人到中年,不疯魔,不成活!
  4. oracle年龄计算函数
  5. Socket面试题整理
  6. 宽带波形测试软件,适用于5G时代的波形测试分析系统是怎样的?
  7. 安卓调试工具 adb 命令大全
  8. http 连接池 java_HttpClient 连接池管理
  9. Windows下 Java9安装教程
  10. C语言scanf函数用法完全攻略