怎么用nodejs给c#写一个数据表的实体类生成工具

  介绍

这篇文章将为大家详细讲解有关怎么用nodejs给c#写一个数据表的实体类生成工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

虽然微软提供了T4模板,但是我感觉非常难用。哪儿比得上直接用脚本来写模板来的爽。

因为要给一个老项目做周边的工具,需要连接到数据库。

我习惯性用EntityFrameworkCore来做,因为毕竟从出道开始就一直在用的一个ORM。

EF6时代,vs提供了dbfirst,但是只是针对好状态"置疑"像。

因为这次的数据库是MySQL,所以vs很多东西都支持不够了。

但是支持不够就自己动手丰衣足食嘛。

我们使用ejs这个模板引擎来做生成器。

npm  install  ejs

然后用查询出表结构:

b.query (& # 39; desc 文章# 39;),然后(res =祝辞,{      })

然后编写模板,ejs的模板语法和aspx时代的时候的模板语法很相似,都是尖括号+百分号这样的风格& lt; % %祝辞,相信有aspx开发经验的老铁们对这个模板引擎还是很习惯的

using 系统;   using  System.Collections.Generic;   using 来;   using  System.Threading.Tasks;      namespace 你的命名空间   {   %=public  class  & lt; table  - %比;   {   % & lt; rows.forEach(函数(行){,,%比;   % & lt;如果(row.Type.indexOf (& # 39; bigint # 39;) !=1){,, %比;   %=public  long  & lt; row.Field  %祝辞,{组,得到,,,}   % & lt;}, - %比;   % & lt;如果(row.Type.indexOf (& # 39; datetime # 39;) !=1){,, %比;   %=public  DateTime  & lt; row.Field  %祝辞,{组,得到,,,}   % & lt;}, - %比;   % & lt;如果(row.Type.indexOf (& # 39; varchar # 39;) !=1){,, %比;   %=public  string  & lt; row.Field  %祝辞,{组,得到,,,}   % & lt;}, - %比;   % & lt;如果(row.Type.indexOf(& # 39;简单# 39;)!=1){,,%比;   %=public  string  & lt; row.Field  %祝辞,{组,得到,,,}   % & lt;}, - %比;   % & lt;如果(row.Type.indexOf(& # 39;有些# 39;)!=1){,,%比;   %=public  bool  & lt; row.Field  %祝辞,{组,得到,,,}   % & lt;}, - %比;   % & lt;如果(row.Type.indexOf(& # 39;量变# 39;)!=1){,,%比;   %=public  string  & lt; row.Field  %祝辞,{组,得到,,,}   % & lt;}, - %比;   % & lt;});,, %比;   }   }

以上的模板中,针对不同的MySQL数据类型做了对应的c#类型映射。

然后使用ejs来渲染出一个文本,最后保存到文件夹中就好了

var  tableName =, & # 39;表名字& # 39;,,//对应的模板中类名的字和生成的cs文件的名字   ,,,ejs.renderFile(& # 39;。/模板/posts.ejs& # 39;,,{,行:res.rows,, & # 39;表# 39;:,表名},,(呃,,str),=祝辞,{   ,,,,,,,if  (err), {   ,,,,,,,,,,,console.error(错);   ,,,,,,,}   ,,,,,,,else  {   ,,,,,,,,,,,let  temp =, path.join (__dirname, & # 39;临时# 39;);   ,,,,,,,,,,,var  exist =, fs.existsSync(临时)   ,,,,,,,,,,,if  (!), {   ,,,,,,,,,,,,,,,fs.mkdirSync ()   ,,,,,,,,,,,}   ,,,,,,,,,,,fs.writeFile (path.join(临时表,表名+ & # 39;cs # 39;),, str,, (err),=祝辞,{   ,,,,,,,,,,,,,,,if  (err), {   ,,,,,,,,,,,,,,,,,,,console.error(错);   ,,,,,,,,,,,,,,,},{else    ,,,,,,,,,,,,,,,,,,,console.log(& # 39;生成模板成功& # 39;);   ,,,,,,,,,,,,,,,}   ,,,,,,,,,,,})      ,,,,,,,}   ,,,})

使用节点执行一下,就能生成出一个cs文件了。

因为我表不多,我就单个生成就行了。如果要扩展出整个数据库都生成,可以再写几行代码就能整个库都生成了!

关于“怎么用nodejs给c#写一个数据表的实体类生成工具”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

怎么用nodejs给c#写一个数据表的实体类生成工具