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 インストール チュートリアル

推薦する

ユーザーエクスペリエンスの76の経験ポイントの要約

ウェブサイト体験の分類1. 感覚体験:快適性を重視した視聴覚体験をユーザーに提供します。 2. イン...

nginxアクセス制御の実装例

高性能で軽量なウェブサービスソフトウェアであるNginxについて高い安定性 システムリソースの消費量...

MySQL の詳細な単一テーブルの追加、削除、変更、クエリの CRUD ステートメント

MySQL の追加、削除、変更、クエリステートメント1. 練習シートを作成するここでの練習表は3つの...

画像にマウスを置いたときにズームイン/ズームアウトするには JS を使用します

マウスが画像上にあるときにズームインおよびズームアウトするには、JS を使用します。具体的なコードは...

winx64 での mysql5.7.19 の基本的なインストール プロセス (詳細)

1. ダウンロード参考: https://www.jb51.net/softs/451120.ht...

タブ切り替えを実装するための HTML サンプル コード

タブ切り替えもプロジェクトではよく使われる技術です。一般的にタブ切り替えはjsやjqを使って実装され...

nginxを使用してドメイン名ベースの仮想ホストを構成する

1. 仮想ホストとは何ですか?仮想ホストは、特殊なテクノロジーを使用して、実行中のサーバーを論理的に...

nginxディレクトリパスをリダイレクトする方法

ドメイン名に続くパスがデフォルトの Web ディレクトリではなく、ローカル ディスク上の他のディレク...

JavaScriptのループの違いについての詳細な説明

目次序文列挙可能なプロパティ反復可能なオブジェクトforEachメソッドとmapメソッドチェーン呼び...

MySQL マルチテーブルクエリの詳細な説明

いつも、気づかないうちに時間というのは驚くほど早く過ぎていきます。小暑が過ぎ、中暑に突入しました。太...

Centos8 は kdc 暗号化に基づいて nfs を構築します

目次構成nfs サーバー (nfs.skills.com) nfs クライアント (client.s...

HTML いくつかの特別な分割線効果

1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...

CSS 境界線の半分または部分的に表示される実装コード

1. 疑似クラスを使用して境界線の半分を表示する <!DOCTYPE html> <...

MySQLデータベースのタイムアウト設定を構成する方法の例

目次序文1. JDBCタイムアウト設定2. 接続プールのタイムアウト設定3. MyBatisクエリの...

MySQLのイベントスケジューラEVENTを理解する

MySQL のイベント スケジューラ EVENT は、Unix crontab や Windows ...