最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用nodejs給C#寫一個(gè)數(shù)據(jù)表的實(shí)體類生成工具

 更新時(shí)間:2021年05月11日 10:15:35   作者:青城同學(xué)  
這篇文章主要介紹了如何用nodejs給C#寫一個(gè)數(shù)據(jù)表的實(shí)體類生成工具,對nodejs感興趣的同學(xué),可以參考下

雖然微軟提供了T4模板,但是我感覺非常難用。哪兒比得上直接用腳本來寫模板來的爽。

因?yàn)橐o一個(gè)老項(xiàng)目做周邊的工具,需要連接到數(shù)據(jù)庫。

我習(xí)慣性用EntityFrameworkCore來做,因?yàn)楫吘箯某龅篱_始就一直在用的一個(gè)ORM。

EF6時(shí)代,vs提供了dbfirst,但是只是針對sqlserver好像。

因?yàn)檫@次的數(shù)據(jù)庫是MySQL,所以vs很多東西都支持不夠了。

但是支持不夠就自己動(dòng)手豐衣足食嘛。

我們使用ejs這個(gè)模板引擎來做生成器。

npm install ejs

然后用查詢出表結(jié)構(gòu):

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

})

然后編寫模板,ejs的模板語法和aspx時(shí)代的時(shí)候的模板語法很相似,都是尖括號(hào)+百分號(hào)這樣的風(fēng)格<%%>,相信有aspx開發(fā)經(jīng)驗(yàn)的老鐵們對這個(gè)模板引擎還是很習(xí)慣的

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數(shù)據(jù)類型做了對應(yīng)的C#類型映射。

然后使用ejs來渲染出一個(gè)文本,最后保存到文件夾中就ok了

var tableName = '表名字'; //對應(yīng)的模板中的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執(zhí)行一下,就能生成出一個(gè)cs文件了。

因?yàn)槲冶聿欢?,我就單個(gè)生成就行了。如果要擴(kuò)展出整個(gè)數(shù)據(jù)庫都生成,可以再寫幾行代碼就能整個(gè)庫都生成了!

以上就是如何用nodejs給C#寫一個(gè)數(shù)據(jù)表的實(shí)體類生成工具的詳細(xì)內(nèi)容,更多關(guān)于nodejs的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • node.js爬取中關(guān)村的在線電瓶車信息

    node.js爬取中關(guān)村的在線電瓶車信息

    這篇文章主要給大家介紹了關(guān)于利用node.js如何爬取中關(guān)村的在線電瓶車信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Node.js安裝教程和NPM包管理器使用詳解

    Node.js安裝教程和NPM包管理器使用詳解

    這篇文章主要介紹了Node.js安裝教程和NPM包管理器使用詳解,安裝部分講解了Windows、和MAC OS下的安裝圖解,并介紹了Linux下的源碼安裝方法,最后對NPM包管理器做了詳細(xì)介紹,需要的朋友可以參考下
    2014-08-08
  • mac上node.js環(huán)境的安裝測試

    mac上node.js環(huán)境的安裝測試

    這篇文章主要為大家詳細(xì)介紹了mac上node.js環(huán)境的安裝測試,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Node.js中使用計(jì)時(shí)器定時(shí)執(zhí)行函數(shù)詳解

    Node.js中使用計(jì)時(shí)器定時(shí)執(zhí)行函數(shù)詳解

    這篇文章主要介紹了Node.js中使用計(jì)時(shí)器定時(shí)執(zhí)行函數(shù)詳解,本文使用了Node.js中的setTimeout和setInterval函數(shù),需要的朋友可以參考下
    2014-08-08
  • node-sass安裝失敗的原因與解決方法

    node-sass安裝失敗的原因與解決方法

    這篇文章主要給大家介紹了關(guān)于node-sass安裝失敗的原因與解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • 使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

    使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

    從3月初來到帝都某創(chuàng)業(yè)公司的服務(wù)器團(tuán)隊(duì)實(shí)習(xí),到現(xiàn)在已接近半年的時(shí)間。PS: 已轉(zhuǎn)正,服務(wù)器端用的 Node。
    2014-08-08
  • node?NPM庫增強(qiáng)版globby?Promise使用學(xué)習(xí)

    node?NPM庫增強(qiáng)版globby?Promise使用學(xué)習(xí)

    這篇文章主要為大家介紹了node?NPM庫增強(qiáng)版globby?Promise使用學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • node.js增刪改查保姆級(jí)教程方法

    node.js增刪改查保姆級(jí)教程方法

    這篇文章主要給大家介紹了關(guān)于node.js增刪改查保姆級(jí)教程的相關(guān)資料,node.js接口可以實(shí)現(xiàn)增加、刪除、修改和查詢操作,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 使用express搭建一個(gè)簡單的查詢服務(wù)器的方法

    使用express搭建一個(gè)簡單的查詢服務(wù)器的方法

    本篇文章主要介紹了使用express搭建一個(gè)簡單的查詢服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • node網(wǎng)頁分段渲染詳解

    node網(wǎng)頁分段渲染詳解

    按照常理,我們渲染一張網(wǎng)頁,必定是網(wǎng)頁全部拼裝完畢,然后生成HTML字符串,傳送至客戶端。這也意味著,如果一張網(wǎng)頁處理的有快有慢的話,必須串行等到所有的邏輯都處理完畢。后端才能進(jìn)行返回。
    2016-09-09

最新評(píng)論

黄平县| 满洲里市| 乐至县| 南京市| 南宁市| 合肥市| 西安市| 邻水| 准格尔旗| 淅川县| 耒阳市| 都昌县| 满洲里市| 丰城市| 正蓝旗| 广河县| 日土县| 舞钢市| 眉山市| 青田县| 应城市| 文昌市| 巴南区| 阿坝县| 盐山县| 寻乌县| 五寨县| 广饶县| 平远县| 永年县| 霍邱县| 墨玉县| 庆云县| 塘沽区| 钦州市| 石城县| 深圳市| 仪陇县| 鄂尔多斯市| 乌兰察布市| 宜丰县|