Hi,
Zitat von Doltsche |
Zitat | Das funktioniert nur solange, wie der Entwickler absolute "Basic-SQL-Statements" schreibt. Sobald irgendeine spezifische DB-Funktion im SQL-String vorkommt, klappt es nicht mehr. |
|
Ich habe beim entwickeln meines ORMappers die Frage von mir geschoben.
Mein Ziel war einen ORMapper zu bieten der zu jeder datenbank passt und die möglichkeiten jeder Datenbank ausnützt. (geht ja nicht)
also habe ich mir einen "Dummen" ORMapper geschrieben, der Intern für jeden Datenbank einen "Connector" hat.
dieser connector liefert eigentlich nur SQLStrings die gegen die Datenbank gefahren werden können.
Die SQLStrings werden aus meinen "Dto" Dateien ausgelesen. Diese Datei ist mit Attributen vollgestopft. (TableMappingAttribute, FieldMappingAttribute, PrimaryKeyattribute, ForeinKeyAttribute, etc)
Mit dieser Vorgehensweise kann ich bei einem einzelnen Select auch JOIN befehlen zusammen bauen. Wie ein JOIN aussehen muss weis der connector, was er joinen muss kann er aus bekommt er vom ORMapper ausgelesen.
Damit bin ich Datenbank unabhängig solange ich nur SELECT UPDATE und DELETE verwende. Genügt für den grösseren Teil den die Anwendung braucht.
Es genügt aber nicht für alle Programme und dafür habe ich ein neues Attribut erfunden, das CommandAttribute
dieses CommandAttibute kann clientseitig verwendet werden um einen SQL-Procedure aufzurufen.
Damit ist der Verwender des ORMappers in der Verantwortung sich einen umstieg auf eine andere Datenbank zu erschweren. Nicht mehr Deine.
Durch eigene connectoren die sich die SQL-Befehle zusammen bauen, machst Du Dir schon recht viel datenbank unabhängigkeit ohne auf features der datenbank zu verzichten.
hoffe der Text war verständlich.
lg
RR