So schreiben Sie mit nodejs ein Tool zur Generierung von Entitätsklassen für Datentabellen für C#

So schreiben Sie mit nodejs ein Tool zur Generierung von Entitätsklassen für Datentabellen für C#

Obwohl Microsoft T4-Vorlagen bereitstellt, finde ich sie sehr schwierig zu verwenden. Es gibt nichts Besseres, als Vorlagen direkt mit Skripten zu schreiben.

Da ich Peripherietools für ein altes Projekt erstellen möchte, muss ich eine Verbindung zur Datenbank herstellen.

Ich bin an die Verwendung von EntityFrameworkCore gewöhnt, da es sich schließlich um das ORM handelt, das ich seit meinem Debüt verwende.

In der EF6-Ära stellte vs dbfirst bereit, aber es schien nur für SQL Server zu sein.

Da es sich bei der Datenbank diesmal um MySQL handelt, werden viele Dinge in VS nicht vollständig unterstützt.

Reicht die Unterstützung jedoch nicht aus, können Sie selbst dafür sorgen, dass Sie sich ausreichend mit Nahrung und Kleidung versorgen.

Als Generator verwenden wir die ejs Template Engine.

npm installiere ejs

Verwenden Sie dann die Abfrage, um die Tabellenstruktur abzurufen:

b.query('desc Beiträge').then(res => {

})

Schreiben Sie dann die Vorlage. Die Vorlagensyntax von ejs ist der Vorlagensyntax der ASPX-Ära sehr ähnlich. Beide bestehen aus spitzen Klammern + Prozentzeichen <%%>. Ich glaube, dass diejenigen, die über ASPX-Entwicklungserfahrung verfügen, mit dieser Vorlagen-Engine immer noch sehr vertraut sind.

System verwenden;
mit System.Collections.Generic;
mit System.Linq;
verwenden von System.Threading.Tasks;

Namespace Ihr Namespace {
öffentliche Klasse <%= Tabelle -%>
{
<% Zeilen.fürJeden(Funktion(Zeile){ -%>
<% if(row.Type.indexOf('bigint')!=-1){ -%>
öffentliche lange <%= Zeile.Feld %> { erhalten; festlegen; }
<% } -%>
<% wenn (Zeile.Typ.indexOf('datetime')!=-1){ -%>
öffentliche DateTime <%= Zeile.Feld %> { abrufen; festlegen; }
<% } -%>
<% wenn (Zeile.Typ.indexOf('varchar')!=-1){ -%>
öffentliche Zeichenfolge <%= Zeile.Feld %> { abrufen; festlegen; }
<% } -%>
<% if(row.Type.indexOf('mediumtext')!=-1){ -%>
öffentliche Zeichenfolge <%= Zeile.Feld %> { abrufen; festlegen; }
<% } -%>
<% wenn(row.Type.indexOf('bit')!=-1){ -%>
öffentliches bool <%= Zeile.Feld %> { abrufen; festlegen; }
<% } -%>
<% if(row.Type.indexOf('langtext')!=-1){ -%>
öffentliche Zeichenfolge <%= Zeile.Feld %> { abrufen; festlegen; }
<% } -%>
<% }); -%>
}
}

In der obigen Vorlage werden entsprechende C#-Typzuordnungen für verschiedene MySQL-Datentypen vorgenommen.

Verwenden Sie dann ejs, um einen Text zu rendern, und speichern Sie ihn schließlich im Ordner.

var tableName = 'table name'; //Der entsprechende Klassenname in der Vorlage und der Name der generierten cs-Datei ejs.renderFile('./template/posts.ejs', { rows: res.rows, 'table': tableName}, (err, str) => {
        wenn (Fehler) {
            Konsole.Fehler(Fehler);
        }
        anders {
            let temp = Pfad.join(__dirname, 'temp');
            var exist = fs.existsSync(temp)
            wenn (!existieren) {
                fs.mkdirSync()
            }
            fs.writeFile(Pfad.join(temp, Tabellenname+'.cs'), str, (err) => {
                wenn (Fehler) {
                    Konsole.Fehler(Fehler);
                } anders {
                    console.log('Vorlage erfolgreich generiert');
                }
            })

        }
    })

Verwenden Sie zur Ausführung einen Knoten, und es wird eine CS-Datei generiert.

Da ich nicht viele Tabellen habe, erstelle ich sie einfach einzeln. Wenn Sie die Generierung der gesamten Datenbank erweitern möchten, können Sie noch ein paar Codezeilen schreiben, um die gesamte Bibliothek zu generieren!

Oben finden Sie Einzelheiten dazu, wie Sie mit nodejs ein Tool zur Generierung von Entitätsklassen für eine Datentabelle in C# schreiben. Weitere Informationen zu nodejs finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Fehlerbehebung bei hohem Speicherverbrauch von NodeJs, tatsächlicher Kampfrekord
  • Detaillierte Erläuterung der Verwendung des in Nodejs integrierten Verschlüsselungsmoduls zur Peer-to-Peer-Verschlüsselung und -Entschlüsselung
  • Detaillierte Erklärung asynchroner Iteratoren in nodejs
  • Detaillierte Erklärung der in Node.js integrierten Module
  • Quellcodeanalyse des Nodejs-Modulsystems
  • Eine kurze Diskussion über ereignisgesteuerte Entwicklung in JS und Nodejs
  • So verwenden Sie das Modul-FS-Dateisystem in Nodejs
  • Zusammenfassung einiger Tipps zum Umgehen der Node.js-Codeausführung
  • Nodejs Exploration: Tiefgreifendes Verständnis des Prinzips der Single-Threaded High Concurrency
  • Nodejs-Fehlerbehandlungsprozessaufzeichnung

<<:  Führen Sie die Schritte zum Konfigurieren der grundlegenden Benutzerauthentifizierung auf Nginx-Ebene aus.

>>:  MySQL 8.0.11 Installations-Tutorial unter Windows

Artikel empfehlen

Grundsätze für die Bereitstellung und Konfiguration mehrerer Tomcat-Instanzen

1. Schalten Sie die Firewall aus und übertragen S...

Axios Sekundärkapselungsbeispiel Demo im Projekt

1. Warum verpacken? Erleichtert das Aufrufen von ...

Detaillierte Erläuterung des MySQL-Clusterindex und des Nicht-Clusterindex

1. Clustered-Index Tabellendaten werden in der Re...

Javascript-Grundlagen zu integrierten Objekten

Inhaltsverzeichnis 1. Einführung in integrierte O...

So erweitern Sie den Linux-Swap-Speicher

Swap-Speicher bedeutet hauptsächlich, dass das Sy...

Einige „Fallstricke“ beim Upgrade der MySQL-Datenbank

Bei kommerziellen Datenbanken hat die Datenbankak...

Vier Möglichkeiten zum Wechseln von Registerkarten in VUE

Inhaltsverzeichnis 1. Statische Implementierungsm...

Formel und Berechnungsmethode zur Schätzung der Server-Parallelität

Vor Kurzem musste ich den Server erneut einem Str...

Lösen Sie das Problem der inkonsistenten MySQL-Speicherzeit

Nachdem die Systemzeit mit Java ermittelt und in ...

Datenbankabfrage, welches Objekt welches Feld enthält, Methodenanweisung

Die Datenbank fragt ab, welches Objekt welche Fel...

MySQL partitioniert vorhandene Tabellen in der Datentabelle

Inhaltsverzeichnis So funktioniert es Betriebsabl...

MySQL-Gruppe durch Gruppieren mehrerer Felder

Bei täglichen Entwicklungsaufgaben verwenden wir ...