文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

虽然微软提供了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的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯