如何用nodejs给C#写一个数据表的实体类生成工具

 更新时间:2021年05月11日 10:15:35   作者:青城同学  
这篇文章主要介绍了如何用nodejs给C#写一个数据表的实体类生成工具,对nodejs感兴趣的同学,可以参考下

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

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

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

EF6时代,vs提供了dbfirst,但是只是针对sqlserver好像。

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

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

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

npm install ejs

然后用查询出表结构:

b.query('desc posts').then(res => {

})

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace 你的命名空间
{
public class <%= table -%>
{
<% rows.forEach(function(row){ -%>
<% if(row.Type.indexOf('bigint')!=-1){ -%>
public long <%= row.Field %> { get; set; }
<% } -%>
<% if(row.Type.indexOf('datetime')!=-1){ -%>
public DateTime <%= row.Field %> { get; set; }
<% } -%>
<% if(row.Type.indexOf('varchar')!=-1){ -%>
public string <%= row.Field %> { get; set; }
<% } -%>
<% if(row.Type.indexOf('mediumtext')!=-1){ -%>
public string <%= row.Field %> { get; set; }
<% } -%>
<% if(row.Type.indexOf('bit')!=-1){ -%>
public bool <%= row.Field %> { get; set; }
<% } -%>
<% if(row.Type.indexOf('longtext')!=-1){ -%>
public string <%= row.Field %> { get; set; }
<% } -%>
<% }); -%>
}
}

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

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

var tableName = '表名字'; //对应的模板中的class名字和生成的cs文件的名字
    ejs.renderFile('./template/posts.ejs', { rows: res.rows, 'table': tableName}, (err, str) => {
        if (err) {
            console.error(err);
        }
        else {
            let temp = path.join(__dirname, 'temp');
            var exist = fs.existsSync(temp)
            if (!exist) {
                fs.mkdirSync()
            }
            fs.writeFile(path.join(temp, tableName+'.cs'), str, (err) => {
                if (err) {
                    console.error(err);
                } else {
                    console.log('生成模板成功');
                }
            })

        }
    })

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

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

以上就是如何用nodejs给C#写一个数据表的实体类生成工具的详细内容,更多关于nodejs的资料请关注脚本之家其它相关文章!

相关文章

  • node.js爬取中关村的在线电瓶车信息

    node.js爬取中关村的在线电瓶车信息

    这篇文章主要给大家介绍了关于利用node.js如何爬取中关村的在线电瓶车信息的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用node.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Node.js安装教程和NPM包管理器使用详解

    Node.js安装教程和NPM包管理器使用详解

    这篇文章主要介绍了Node.js安装教程和NPM包管理器使用详解,安装部分讲解了Windows、和MAC OS下的安装图解,并介绍了Linux下的源码安装方法,最后对NPM包管理器做了详细介绍,需要的朋友可以参考下
    2014-08-08
  • mac上node.js环境的安装测试

    mac上node.js环境的安装测试

    这篇文章主要为大家详细介绍了mac上node.js环境的安装测试,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Node.js中使用计时器定时执行函数详解

    Node.js中使用计时器定时执行函数详解

    这篇文章主要介绍了Node.js中使用计时器定时执行函数详解,本文使用了Node.js中的setTimeout和setInterval函数,需要的朋友可以参考下
    2014-08-08
  • node-sass安装失败的原因与解决方法

    node-sass安装失败的原因与解决方法

    这篇文章主要给大家介绍了关于node-sass安装失败的原因与解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • 使用node.js半年来总结的 10 条经验

    使用node.js半年来总结的 10 条经验

    从3月初来到帝都某创业公司的服务器团队实习,到现在已接近半年的时间。PS: 已转正,服务器端用的 Node。
    2014-08-08
  • node NPM库增强版globby Promise使用学习

    node NPM库增强版globby Promise使用学习

    这篇文章主要为大家介绍了node NPM库增强版globby Promise使用学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • node.js增删改查保姆级教程方法

    node.js增删改查保姆级教程方法

    这篇文章主要给大家介绍了关于node.js增删改查保姆级教程的相关资料,node.js接口可以实现增加、删除、修改和查询操作,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 使用express搭建一个简单的查询服务器的方法

    使用express搭建一个简单的查询服务器的方法

    本篇文章主要介绍了使用express搭建一个简单的查询服务器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • node网页分段渲染详解

    node网页分段渲染详解

    按照常理,我们渲染一张网页,必定是网页全部拼装完毕,然后生成HTML字符串,传送至客户端。这也意味着,如果一张网页处理的有快有慢的话,必须串行等到所有的逻辑都处理完毕。后端才能进行返回。
    2016-09-09

最新评论