Datentypabhängige Konvertierungen

Dies ist eine einzigartige Funktionalität von easy code generator.

Es kommt oft vor, dass abhängig vom Datentyp einer Tabellenspalte zum Beispiel, unterschiedlicher code generiert werden muss.

Nehmen wir an, dass Sie in einer Datenklasse Properties für alle Spalten einer Tabelle definieren müssen. Eine Spalte „databaseProductID“ ist als NOT NULL definiert. Eine andere Spalte „tableCount“ darf einen NULL Wert haben. In C# würden Sie die beiden Properties wie folgt deklarieren:

private Nullable<System.Int32> databaseProductID;
private System.Int32 tableCount;

oder
private System.Int32? databaseProductID;
private System.Int32 tableCount;

In vb.net wäre es:

Dim databaseProductID As Nullable(Of Integer)
Dim tableCount As Integer

oder
Dim databaseProductID As Integer?
Dim tableCount As Integer

Und wie sieht es mit anderen Programmiersprachen wie Java etc. aus? Sie erkennen das Dilemma? Wie soll easy code generator wissen was Sie möchten?

Aus diesem Grund haben wir Datentyp abhängige Konvertierungen bedacht. Für jeden .net Datentyp und abhängig davon, ob eine Spalte als NOT NULL definiert wurde oder nicht, können Sie easy code generator sagen, welchen Code er verwenden soll. Sie können so viele Konvertierungstabellen definieren wie Sie möchten.

Unter <Code Snippet Generator> -> <Column Parsing> -> <Data Type Parsing> können Sie Ihre Konvertierungen auswählen bzw. verwalten.

Mit einem Doppelkick auf einen Eintrag in der Liste oder einem klick auf den linken Knopf übernehmen Sie einen Konvertierungsbefehl in ihre Vorlage.

Mit dem rechten Knopf öffnen Sie die Verwaltung der Konvertierungen.

Hier können Sie neue Konvertierungsgruppen verwalten.

  • ID: Primärschlüssel der Gruppe, wird vom System vergeben
  • Parsing Group: der Name der Gruppe.

Speichern Sie Ihre Eingabe bzw. Ihre Änderungen bevor Sie fortfahren. Nun können Sie mit dem rechten Knopf das Eingabefenster für die Konvertierungen öffnen.

Wen Sie vorher eine neue Gruppe angelegt haben, dann ist die Tabelle am Anfang leer.

Klicken Sie unten in der Tabelle auf eines der Datentypen und diesen auszuwählen. Geben Sie anschließend im oberen Bereich die Daten ein und klicken Sie auf Speichern:

  • Parsing group ID: Primärschlüssel, wird vom System vergeben und kann nicht geändert werden.
  • Konvertierungsgruppe Name: Anzeige des Namen der Gruppe, kann nicht geändert werden.
  • Parsing string (no nullable): Code der ersetzt wird wenn die Spalte als NOT NULL definiert wurde.
  • Parsing string (nullable): Code der ersetzt wird wenn die Spalte als NULL definiert wurde.

Die Parsing Strings können Text, Code und auch easy code generator Befehle beinhalten. Z.B. verwenden wir beim Lesen von Daten aus einer Tabelle mit einem SELECT Befehl einen Data Reader und weisen dann die Werte den Properties einer Klasse zu. Für den Datentyp DateTime verwenden wir als Parsing String:

bei not nullable: Convert.ToDateTime(reader[„<<columnName>>“])
bei nullable: (reader[„<<columnName>>“] as DateTime?) ?? null

Wie Sie sehen, verwenden wir die Spaltenvariable <<columnName>> innerhalb der datentypabhängigen Konvertierung.

Beispiel

Wir verwenden als Beispiel wieder unsere Tabelle mit 4 Spalten.

1 Variablendeklaration mit Standardwerten

Um eine einfache Variablendeklaration anhand der 4 Spalten zu machen, verwenden wir folgenden easy code generator Codeschnipsel:

{{<<columnsubstitution>><<crlf=true>><<delimiter=>><<columns=all>>private {{<<dataTypeParsingGroup>><<dataTypeParsingGroupID=3>><<endDataTypeParsingGroup>>}} <<columnName>> = {{<<dataTypeParsingGroup>><<dataTypeParsingGroupID=2>><<endDataTypeParsingGroup>>}};<<endcolumnsubstitution>>}}

Wir führen den <<columnsubstitution>> Befehl aus und im Eingabebereich verwenden wir zwei datentypabhängige Konvertierungen. Zuerst die mit ID=3 gefolgt vom <<columnName>> Tag und danach eine mit ID=2.

Die Konvertierungstabelle für ID=3 haben wir oben bereits abgebildet. Die für ID=2 definiert die Standardwerte, die für jeden Datentyp zugewiesen wird.

Nach der Code Generierung erhalten wir folgendes Resultat:

private System.Int32 templateGroupID = 0;
private System.String description = „“;
private System.DateTime recordInsertDate = DateTime.Now;
private System.DateTime recordUpdateDate = DateTime.Now;

2 Werte zuweisen nach Lesevorgang

Wir verwenden einen Data Reader um Daten aus der Datenbank zu lesen. Diese werden anschließend Properties einer Datenklasse zugewiesen. Wir verwenden folgenden easy code generator Codeschnipsel:

{{<<columnsubstitution>><<crlf=true>><<delimiter=>><<columns=all>><<columnNameCap>> = {{<<dataTypeParsingGroup>><<dataTypeParsingGroupID=1>><<endDataTypeParsingGroup>>}};<<endcolumnsubstitution>>}}

Auch hier verwenden wir den <<columnssubstitution>> Befehl. Im Eingabebereich verwenden wir die Spaltenvariable <<columnNameCap>> mit der Zuweisung „=“ und dann die datenabhängige Konvertierung mit ID=1. Diese beinhaltet den kompletten Code um ein Data Reader Feld auszulesen und ihn in den richtigen Datentyp zu konvertieren.

Wir erhalten folgendes Resultat:

TemplateGroupID = Convert.ToInt32(reader[„templateGroupID“]);
Description = (reader[„description“] as String);
RecordInsertDate = Convert.ToDateTime(reader[„recordInsertDate“]);
RecordUpdateDate = Convert.ToDateTime(reader[„recordUpdateDate“]);