Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19
Dataclasses

Dataclasses  


 

Dataclasses bieten Objektschnittstellen zu Datenbanktabellen. Alle Dataclasses in einer 4D Anwendung sind als Eigenschaft des Datastore ds verfügbar. Betrachten Sie beispielsweise die folgende Tabelle in der 4D Struktur.

Die Tabelle [Company] ist automatisch als eine Dataclass im Datastore ds verfügbar. Sie können schreiben:

 C_OBJECT(compClass)
 compClass:=ds.Company

Dieser Code weist compClass eine Referenz auf die Dataclass Company zu.

Ein Objekt Dataclass enthält:

  • Attribute
  • Verknüpfungsattribute

Die Dataclass bietet eine Abstraktion der physikalischen Datenbank und erlaubt den Umgang mit einem konzeptionellen Datenmodell. Die Dataclass ist die einzige Möglichkeit, den Datastore abzufragen. Eine Abfrage erfolgt aus einer einzigen Dataclass. Sie basiert auf Attributen und Verknüpfungsattributen der Dataclasses. Die Verknüpfungsattribute sind also das Mittel, um mehrere verknüpfte Tabellen in eine Abfrage einzubinden.

Attribute der Dataclass stehen als Eigenschaften ihrer jeweiligen Klassen zur Verfügung. Zum Beispiel:

 nameAttribute:=ds.Company.name //Referenz auf Class-Attribut
 revenuesAttribute:=ds.Company["revenues"] //alternativer Weg

Dieser Code ordnet nameAttribute und revenuesAttribute Referenzen auf die Attribute name und revenues der Klasse Company zu. Diese Syntax gibt KEINE Werte innerhalb des Attributs zurück, sondern Referenzen auf die Attribute selbst. Für Werte müssen Sie Entities durchlaufen.

Hinweis: Dataclass-Attribute sind Objekte, die Eigenschaften haben. Weitere Informationen dazu finden Sie im Abschnitt ORDA - DataClassAttribute.

Es gibt verschiedene Arten von Dataclass-Attributen: Storage, relatedEntity und relatedEntities. Attribute, die skalar sind (d.h. nur einen einzigen Wert liefern), unterstützen den standardmäßigen 4D Datentyp (Lange Ganzzahl, Text, Objekt, etc.).

  • Ein Speicherattribut entspricht einem Feld in der 4D Datenbank und kann indiziert werden. Werte, die einem Speicherattribut zugeordnet sind, werden beim Sichern als Teil der Entity gespeichert. Beim Zugriff auf ein Speicherattribut kommt sein Wert direkt aus dem Datastore. Speicherattribute sind der grundlegendste Baustein einer Entity und werden durch Namen und Datentyp definiert.
  • Ein Verknüpfungsattribut ermöglicht den Zugriff auf andere Entities. Verknüpfungsattribute können entweder eine einzelne Entity (oder keine Entity) oder eine Entity-Selection (0 bis N Entities) ergeben. Sie basieren auf "klassischen" Verknüpfungen in der relationalen Struktur, um einen direkten Zugriff auf verknüpfte Entities zu ermöglichen. Verknüpfungsattribute sind in ORDA direkt über ihren Namen verfügbar.

Betrachten Sie beispielsweise die folgende partielle Datenbankstruktur und die Verknüpfungseigenschaften:

Alle Speicherattribute sind automatisch verfügbar:

  • in der Dataclass Project: "ID", "name" und "companyID"
  • in der Dataclass Company: "ID", "name" und "discount"

Zusätzlich sind automatisch die folgenden Verknüpfungsattribute verfügbar:

  • in der Dataclass Project: Attribut theClient vom Typ "relatedEntity"; für jedes Projekt (Client) gibt es mindestens eine Company
  • in der Dataclass Company: Attribut companyProjects vom Typ "relatedEntities"; für jede Company gibt es eine beliebige Anzahl verknüpfter Projekte

Hinweis: Die Eigenschaft "Manuell" oder "Automatisch" von Verknüpfungen hat keine Auswirkung in ORDA.

Alle Attribute der Dataclass werden als Eigenschaften der Dataclass angezeigt:

Beachten Sie, dass diese Objekte Attribute beschreiben, aber keinen Zugriff auf Daten gewähren. Das Lesen oder Schreiben von Daten erfolgt über Entity-Objekte. Weitere Informationen dazu finden Sie im Abschnitt Entity Attribute verwenden.

Einige ORDA-Methoden akzeptieren String-Referenzen als Attributnamen und können auch Attribut-Referenzen akzeptieren. Betrachten Sie zum Beispiel folgendes:

 localPeople:=ds.Employee.query("zipCode = 95113")
 lastNames:=localPeople.toCollection("lastname")

Dieser Code definiert eine Entity-Selection von Personen im Postleitzahlbereich 95113. Er erzeugt dann eine Collection von Nachnamen. Anstelle eines String-Wertes in Form eines Attributs können Sie auch eine Attribut-Referenz verwenden:

 lastNameAtt:=ds.Employee.lastname
 localPeople:=ds.Employee.query("zipCode = 95113")
 lastNames:=localPeople.toCollection(lastNameAtt)

Das Objekt Dataclass selbst kann nicht als Objekt kopiert werden:

 $mydataclass:=OB Copy(ds.Employee) //gibt Null zurück

Die Eigenschaften der Dataclass sind dagegen aufzählbar:

 ARRAY TEXT($prop;0)
 OB GET PROPERTY NAMES(ds.Employee;$prop)
  //$prop enthält die Namen aller Dataclass-Attribute

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: ORDA

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v17

 
ARTIKELVERWENDUNG

4D Designmodus ( 4D v19)