Derzeit basiert das teil, wie schon gesagt, auf der ZEOS Lib.
Die Basisklasse besitzt die Funktionen
- ObjectID // Eindeutige ID des Objektes
- LoadMe(WithChilds:boolean=false) // Läd objekt aus der Datenbank evtl. incl Childs
- SaveMe(WithChilds:boolean=true) // Speichert Objekt in der Datenbank
- DeleteMe(WithChilds:boolean=true) // Löscht Objekt aus der Datenbank
- Childs // Liste von Childobjekten des Typs der Basisklasse. Kann aber auch abgeleitete Klassen aufnehmen. (Baumstruktur)
Von dieser Basisklasse können jetzt einfach Klassen abgeleitet werden, die dann selber in der Datenbank eine Tabelle erstellt die alle PROPERTIES enthält.
z.b.
Quelltext
1: 2: 3: 4: 5: 6: 7:
| TMeineTestClass = class(TDBBasicObject) private FName:String; FVorname:String; published property Name:String read FName write FName; property Vorname:String read FVorname write FVorname; |
Dann kann ich z.B.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Name1:=TMeineTestClass.create(MeineZEOSDBConnection); Name1.vorname:='hallo'; Name1.name:='test'; // Name2 wird child von Name1 Name2:=TMeineTestClass.create(Name1); Name2.vorname:='hallo2'; Name2.name:='weifnriu';
//speichert Name 1 incl. Name2 als child, name 2 kann aber auch eine andere Klasse abgeleitet von TMeineTestClass oder TDBBasicObject sein Name1.saveme(true); |
Das Laden geht dann genau so:
Quelltext
1: 2: 3: 4:
| Name1:=TMeineTestClass.create(MeineZEOSDBConnection); Name1.ObjectID:=Mussichmirvorherirgendwogemerkthaben; // Läd name 1 incl name 2! Name1.LoadMe(true); |
Leider können derzeit aber nur Stringkompatible properties (string, int, bool, ...) gespeichert werden!
Da in dem Teil verdammt viel arbeit steckt, will ich das teil nicht für kommerzielle zwecke kostenlos zur verfügung stellen! Das wird teil eines OS Projektes. Ich überlege aber auch, die Klasse als eigenes Framework zur verfügung zu stellen (unter GPL) wenn du es privat nutzen willst, dann sag bescheid, wenn das teil in ein kommerzielles produkt soll, dann müssen wir uns mal über den preis unterhalten
