Node.js を使用して C# のデータ テーブル エンティティ クラス生成ツールを作成する方法

Node.js を使用して C# のデータ テーブル エンティティ クラス生成ツールを作成する方法

Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。スクリプトを使用してテンプレートを直接記述する方法に勝るものはありません。

古いプロジェクトの周辺ツールを作りたいので、データベースに接続する必要があります。

結局のところ、EntityFrameworkCore は私がデビュー以来ずっと使用してきた ORM なので、私はそれを使用することに慣れています。

EF6 の時代には、VS は dbfirst を提供していましたが、それは SQL Server 専用だったようです。

今回のデータベースは MySQL なので、VS では完全にサポートされていない部分が多くあります。

しかし、支援が十分でない場合は、十分な食料と衣服を自分で確保することができます。

ジェネレーターとして ejs テンプレート エンジンを使用します。

npm インストール ejs

次に、クエリを使用してテーブル構造を取得します。

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

})

次にテンプレートを記述します。ejs のテンプレート構文は、aspx 時代のテンプレート構文と非常によく似ており、どちらも山括弧 + パーセント記号 <%%> です。aspx 開発の経験がある人なら、このテンプレート エンジンに今でも非常に馴染みがあると思います。

システムの使用;
System.Collections.Generic を使用します。
System.Linq を使用します。
System.Threading.Tasks を使用します。

名前空間 あなたの名前空間 {
パブリッククラス <%= テーブル -%>
{
<% rows.forEach(function(row){ -%>
<% if(row.Type.indexOf('bigint')!=-1){ -%>
パブリック long <%= row.Field %> { 取得; 設定; }
<% } -%>
<% if(row.Type.indexOf('datetime')!=-1){ -%>
パブリック DateTime <%= row.Field %> { 取得; 設定; }
<% } -%>
<% if(row.Type.indexOf('varchar')!=-1){ -%>
パブリック文字列 <%= row.Field %> { 取得; 設定; }
<% } -%>
<% if(row.Type.indexOf('mediumtext')!=-1){ -%>
パブリック文字列 <%= row.Field %> { 取得; 設定; }
<% } -%>
<% if(row.Type.indexOf('bit')!=-1){ -%>
パブリックブール <%= row.Field %> { 取得; 設定; }
<% } -%>
<% if(row.Type.indexOf('longtext')!=-1){ -%>
パブリック文字列 <%= row.Field %> { 取得; 設定; }
<% } -%>
<% }); -%>
}
}

上記のテンプレートでは、さまざまな MySQL データ型に対して対応する C# 型マッピングが作成されます。

次に、ejs を使用してテキストをレンダリングし、最後にフォルダーに保存します。

var tableName = 'table name'; //テンプレート内の対応するクラス名と生成された cs ファイルの名前 ejs.renderFile('./template/posts.ejs', { rows: res.rows, 'table': tableName}, (err, str) => {
        もし(エラー){
            コンソールエラー(err);
        }
        それ以外 {
            temp = path.join(__dirname, 'temp') とします。
            var 存在する = fs.existsSync(temp)
            存在する場合{
                fs.mkdirSync()
            }
            fs.writeFile(path.join(temp, tableName+'.cs'), str, (err) => {
                もし(エラー){
                    コンソールエラー(err);
                } それ以外 {
                    console.log('テンプレートが正常に生成されました');
                }
            })

        }
    })

node を使用して実行すると、cs ファイルが生成されます。

テーブルはそれほど多くないので、1 つずつ生成します。データベース全体の生成を拡張したい場合は、さらに数行のコードを記述してライブラリ全体を生成できます。

上記は、C# でデータテーブルのエンティティクラス生成ツールを Node.js を使用して記述する方法の詳細です。Node.js の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • NodeJs の高メモリ使用量のトラブルシューティング実戦記録
  • Nodejs 組み込み暗号化モジュールを使用してピアツーピアの暗号化と復号化を実現する詳細な説明
  • Node.js の非同期イテレータの詳細な説明
  • Node.js組み込みモジュールの詳細な説明
  • Nodejs モジュール システムのソースコード分析
  • JS と Nodejs におけるイベント駆動型開発についての簡単な説明
  • Nodejs でモジュール fs ファイルシステムを使用する方法
  • Node.js コード実行をバイパスするためのヒントのまとめ
  • Nodejs 探索: シングルスレッドの高並行性の原理を深く理解する
  • Nodejs エラー処理プロセス記録

<<:  Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

>>:  Windows での MySQL 8.0.11 インストール チュートリアル

推薦する

Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード

最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...

MySQL 5.7 以降のバージョンのダウンロードとインストールのグラフィック チュートリアル

1. ダウンロード1. MySQL公式サイトのダウンロードアドレス: https://downloa...

Alibaba Cloud CentOS7 サーバーの nginx 構成と FAQ の分析

序文:この記事は、jackyzm のブログ https://www.cnblogs.com/jack...

Vue.jsフレームワークはショッピングカート機能を実装します

この記事では、ショッピングカートを実装するためのVue.jsフレームワークの具体的なコードを参考まで...

JavaScript の構成と継承の説明

目次1. はじめに2. プロトタイプチェーン継承3. コンストラクタの継承4. 組み合わせ継承1. ...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...

MySQLデータベースのトランザクションとロックの詳細な分析

目次1. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....

1 時間で MySQL データベースを学ぶ (Zhang Guo)

目次1. データベースの概要1.1 開発の歴史2. MySQL の紹介2.1. MySQLの概要2....

HTML 要素に注釈を付けるときにクラスと ID のどちらが優れているかを分析する

Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...

ページにデータを表示するReactメソッド

目次親コンポーネントリストボックスリストコンポーネントボタンコンポーネント PageButton昨年...

MySQL で日付時刻データを取得し、その後に .0 を追加する方法

MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...

WeChatアプレットコンポーネント開発:視覚的な映画座席選択機能

目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...

CentOS に MySQL 8.0 をインストールして設定するための詳細な手順

序文CentOS に MySQL をインストールして設定する手順は次のとおりです。文章yumソースか...

Vue はボタンをクリックしてファイルをダウンロードする操作コードを実装します (バックエンド Java)

前回の記事では、ボタンをクリックしてファイルをダウンロードするVueの機能を紹介しました。今日は、ボ...