2009-08-19 5 views
1

Ich habe durch vorher gestellte Fragen gegraben und hatte kein Glück, ein Duplikat zu finden. Ich würde gerne grundlegende Entity-Klassen in .NET von einem DB2-Schema generieren (mit dem iSeries OLEDB-Provider). Gibt es einen einfachen Weg, dies zu tun? Ich habe mir MyGeneration und CodeSmith angeschaut und es scheint, als müsste es einen einfacheren Weg geben.Klassengenerierung aus dem Datenbankschema

Vielen Dank im Voraus.

BEARBEITEN Ich nehme das iSeries-Tag davon in der Hoffnung, dass es die Frage ein wenig entschlüsseln wird. Hat jemand etwas, das sie gegen irgendeinen ADO.Net- oder OLEDB-Anbieter verwendet haben? Ich denke, ich könnte es anpassen, um mit iSeries zu arbeiten.

BEARBEITEN # 2 Hinzufügen des iSeries-Tags zurück und wird meine eigene Antwort in ein paar Tagen annehmen, hoffentlich wird dies jemandem in der Zukunft helfen. +1 an Antwortende, danke.

Antwort

0

Nach mehr Forschung entschied ich mich, den Code-Generator selbst zu schreiben. Der Grund, warum ich gefragt habe, war, dass der iSeries-Provider für .Net nicht sehr robust ist, also gibt es keine Möglichkeit, Schemainformationen aufzuzählen. Doch nach this question zu finden, konnte ich es mit einfachen Inline-SQL wie dies tun:

//Enumerate schema tables (excludes views) 
select table_name from qsys2.tables where table_schema = 'schema_name' and table_type = 'BASE TABLE' 

//Enumerate table columns 
select * from qsys2.columns where table_schema = 'schema_name' and table_name = 'table_name' order by ordinal_position; 

Vielleicht wird dies jemand in der Zukunft helfen.

+0

Dies kann die Schemadaten erzeugen, aber wie erzeugt es C# -Klassendefinitionen? Möchten Sie nicht auch get und metods generieren, um Zeilen in die Datenbank zu holen? –

1

Dies ist vielleicht ein wenig langatmig, aber ein Weg ist, um das Schema in eine Object Role Modeling Diagramm Reverse Engineering der NORMA VS plug in und dann mit Ihren .NET-Klassen über den PLIX Generator erzeugen, die mit dem Stecker kommt.

Sie können feststellen, dass die resultierenden Klassen mit zusätzlichen Elementen versehen sind, die Sie möglicherweise nicht benötigen (sie sind codiert, damit sie bei Bedarf in einem Komponentenmodellkontext verwendet werden können), aber Sie können diese zusätzlichen Artefakte problemlos entfernen.

+0

Vielen Dank für Ihre Antwort. –

2

Haben Sie Jeeves probiert? Es ist ein Template-gesteuerter Code-Generator, geschrieben in Perl.

Mit Jeeves können Sie den Spezifikationsparser und die Vorlagen separat ändern und Perl-Befehle in die Vorlage injizieren.

ich nicht genau das tun, was Sie tun wollen, aber was ich tat, war die folgende:

1) Gebraucht Jeeves' OO-Parser als ausgeschüttete und erstellt meine Objektdefinitionen in einer Spezifikationsdatei, die ist in einem Format, das dieser Parser lesen konnte. 2) Ich habe die Vorlage codiert, um den abstrakten Syntaxbaum zu verwenden, den der OO-Parser aus meiner Spezifikationsdatei generiert hat. 3) Dies erzeugt wiederum einen Code-Generator in Perl. Ich habe diesen Codegenerator als ein Pre-Buld-Ereignis (in VS 2005) bezeichnet und der generierte Code wurde dann und dort kompiliert.

Sie müssen die Vorlage erstellen, die Sie wollen (und wahrscheinlich die Spezifikation Parser), aber sobald Sie das tun, können Sie genau das, was Sie wollen, ohne viel zusätzlichen Aufwand ausgeben.

+0

Danke für Ihre Antwort. –