codesmith mysql 注释_代码生成工具:CodeSmith 安装、改造适配Mysql 字段注释、DLL修改 及批量生成实体类代码...

之前一直使用动软的代码自动生成工具,无奈现在连接数据库时Test Connect 能成功,连接却失败,只能另觅工具了,搜索一翻发现了 CodeSmith,据说一个很好用的工具,因为是个付费版本。

最新版本:8.0,官网下载需注册。

网上版本下载地址含注册机:http://www.drv5.cn/sfinfo/15948.html

1、安装及注册参考:

7.0版本的安装及注册:https://www.cnblogs.com/dunitian/p/4096917.html

8.0版本的安装及注册:https://blog.csdn.net/qq_31384551/article/details/80238656

值得注意的是:注册 7.0的版本 Prefix: 是 CS70P-  ; 8.0则是CS80P-

2、连接MySql数据库:

打开数据库列表:

2716d6ade67b1410252c9b79c479a8bc.png

添加数据库:

6eacd507cc4223b3e80f3bf493cde0a8.png

值得注意的是连接字符串:Server=127.0.0.1;User Id=root;Password=pwd;Database=DbName;  可能成功连接并读取到表;

使用此形式:Data Source=127.0.0.1;port=3306;Initial Catalog=DbName;user id=root;password=pwd; 能成功连接但是读取表列表失败

3、生成实体类代码

新建Entity.cst模板文件,代码参考自网络(不记得哪里抄的了)

/*

*本代码由代码生成器自动生成,请不要更改此文件的任何代码。

*生成时间:

*生成者:

*/

using System;

namespace

{

///

///表的实体类

///

public class

{

///

///

///

public

{

get;set;

}

}

}

//得到类的名字(由表名而来)

public string GetClassName()

{

string s=this.SourceTable.Name;//取到表名

//s=s.Replace("st_","");

//判断表名是不是以S结尾,如果是去掉S

if (s.EndsWith("s"))

{

s=s.Substring(0,s.Length-1);

}

return StringUtil.ToPascalCase(s)+"Entity";

}

如下图:

4823df577008a99a7c14fcf712c97b61.png

模板中定义的属性在右下角中对应显示与编辑

选择生成的表后,点击Generate按钮即可生成对应表的实体类

4、批量生成

有别于动软的生成工具,界面选择批量生成即可,而是需要编写代码批量生成,这也有一个好处很方便定制。

新建另一模板: Tables.cst

foreach (TableSchema table in this.SourceDB.Tables)

{

Entity mtc=new Entity();

mtc.SourceTable=table;

mtc.RenderToFile("C:\\Projects\\Documents\\"+GetClassName(table)+".cs",true);

}

%>

//得到类的名字(由表名而来)

public string GetClassName(SchemaExplorer.TableSchema table)

{

string s=table.Name;//取到表名

s=s.Replace("st_","");

//判断表名是不是以S结尾,如果是去掉S

if (s.EndsWith("s"))

{

s=s.Substring(0,s.Length-1);

}

return StringUtil.ToPascalCase(s)+"Entity";

}

通过注模板以关联批量生成的内容。

321a611b27b931ecfcd3151efedc135e.png

同理选取数据库,点击Generate按钮后,对应的代码将生成到对应目录

5、给生成的实体类属性添加注释(MySql)

对于MySql对应的实体类,并没期望出现注释说明,如下图

ed6f63794fbf9e8a96e57f11447bd8df.png

原因及解决方法,参考:

https://blog.csdn.net/nihaoapengyou/article/details/52587986

网上也有对应的Dll提供,但对8.0无效,但我是我没找到。可能是因为7.0版本软件没有对Dll进行强签名,而8.0开始做了。

怎么办?思路还是跟参考的一样。反编译,修改原码,再重新编译成dll 再替换。但可能是因为做了强签名的原因,替换后程序出错了。所以可能现存网上的Dll也是因为签名的问题出错。

签名,我不大熟悉,只能再次借助工具了:.NET Reflector 和 Reflexil

下载 Reflexil 的Relector版 插件:https://www.softpedia.com/get/Programming/Components-Libraries/Reflexil.shtml

在.NET Reflector 中添加插件

工具栏-->Tools-->Add-Ins

46cfa81c97c2cbb973ff0c427acc5291.png

引入解压出来的 Reflexil.Reflector.dll 后,Tools 菜单下面即会出来Reflexil 插件工具

接下来用Reflector 打开Dll

8bf9afc2d7679f8b9e1c4e37d29554d0.png

打到需要修改的地方:

e0b94792649b0be2c13af422e54c436e.png

然后点击:Tools--->Reflexil 工具

将出现Reflexi工具栏:

5911e0dddd5b6f1ae0ec4b51d143e215.png

又由于我IL语言不怎得,所以决定使用Extra 字段来替换

右键修改查询SQL:

a38a555fa0d3bf28145293f674b8cbbd.png

将 EXTRA 修改为 COLUMN_COMMENT

再次修改赋值部份:

e366c98faf7be7a94fb5fd82c48de525.png

将 CS_ColumnExtra  修改为 CS_Description

至此修改完毕,保存DLL

eaa497ac8e465369e838a807d5eec7a8.png

如果你也出现了以下意外:

e9fb57afd20390ba50e20d5319283507.png

就去把.NET SDK下的 sn.exe。一般可以在这里找到(C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools) 拷贝到 插件的目录下:

76eb50647422242838b15143f3e549d3.png

再次保存:

3ab7540c7f26be8da290806878b77c3d.png

点击 Register it for.. 按钮,保存Dll 。

然后再使用该DLL 覆盖 CodeSmith 的

4a73c2c0d9b9a9f041b8b7cc01b0ac36.png

完成!!!

再次使用CodeSmith 批量生成,注释出来了。

8da370691dc70a4a782f9c6aff362698.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值