AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhängig

TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhängig

Ein Thema von juergen · begonnen am 16. Okt 2020 · letzter Beitrag vom 20. Okt 2020
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
966 Beiträge
 
Delphi 10.3 Rio
 
#1

TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhängig

  Alt 16. Okt 2020, 22:19
Datenbank: MSSQL • Version: 2017 • Zugriff über: Aurelius-FireDac
Hallo zusammen,

es hat sich ein neues Projekt ergeben, wo ich endlich das TMS Aurelius ORM ausprobieren möchte und mich in das ORM einarbeiten will.

Jetzt ist es so, dass ich 2 unterschiedliche DBMS unterstützen muss. Je nach der angewendeten Datenbank sind auch die SQL-Statements unterschiedlich.
In meinem klassischen FireDac-Query-SQL-Ansatz benötige ich 4 unterschiedliche SQL-Abfragen  if Datenbank = MSSQL then ... else ... Innerhalb der Datenbankversionen muss ich nochmal -je nach Programm-Version- unterscheiden, da ab einer gewissen Version sich die Tabellenstrukturen stark geändert haben. Das ergibt also 4 verschiedene SQL-Statements.

Wie wäre hier der beste Ansatz wenn ich TMS Aurelius nutzen möchte?


Vielen Dank schon mal vorab!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
966 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 17. Okt 2020, 00:48
Ein unnötiger Post, sorry.
Habe mir inzw. das Buch zum ORM gekauft und damit (und mit der Hilfe) komme ich erst mal weiter. Was mir fehlte war das Automapping. Ich muss ja zur Laufzeit die Tabellenstruktur auslesen. Zuerst hatte ich gedacht ich muss das mit dem Data Modeler machen.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
210 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 17. Okt 2020, 08:41
Damit es uns anderen armen unwisseden auch hilft

wie heist "das Buch zu ORM"

mfg Hannes
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
966 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: TStringgrid zählt nur bis 10

  Alt 17. Okt 2020, 09:31
Das Buch heißt "Introducing Delphi ORM: Object Relational Mapping Using TMS Aurelius"
Ich hatte es bei Amazon gekauft. https://www.amazon.de/gp/product/B07...?ie=UTF8&psc=1
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von TBx (19. Okt 2020 um 08:34 Uhr) Grund: Beitrag ins richtige Thema verschoben
  Mit Zitat antworten Zitat
TomF

Registriert seit: 29. Sep 2015
Ort: Österreich, Innviertel
7 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 17. Okt 2020, 09:32
[...]
Ich hätt übrigens dieses Buch zu verschenken, falls es jemand haben möchte - ich habs einmal gekauft und ein zweites mit persönlicher Widmung des Autors bei einer TMS Veranstaltung bekommen...
Thomas

Geändert von TBx (19. Okt 2020 um 08:37 Uhr) Grund: Durch Bearbeitung des Vorposts überflüssige Zeile entfernt
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
497 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 17. Okt 2020, 13:52
Der Datamodeler macht das auch zur DesignZeit. Eventuell kannst Du es für manche DBs auch direkt über die AureliusConnection machen, bin mir aber nicht sicher, ich habe immer den Datamodeler genommen. Der erzeugt Dir eine Unit für jede Tablle mit dem DB Objekt. Inwieweit das sich jetzt je nach DBMS unterscheidet bei dir, vermag ich nicht zu sagen.

Geändert von TBx (19. Okt 2020 um 08:39 Uhr) Grund: Fullquote entfernt
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
966 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 17. Okt 2020, 16:16
Das Mapping zur Designzeit mit dem DataModeler hilft mir hier nicht, glaub ich zum jetzigen Wissensstand. Mein Programm soll bei mehreren Kunden eingesetzt werden, die jeweils bei der selben Tabelle unterschiedliche Strukturen haben (können), je nach Version. So wie ich es verstanden habe benötige ich dann das [Automapping] bei der Klassenerstellung.

Ich bin aber noch gar nicht soweit
Arbeite mich erst mal Stück für Stück ein.

Danke für deinen Hinweis.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von TBx (19. Okt 2020 um 08:40 Uhr) Grund: Fullquote entfernt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.888 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 17. Okt 2020, 17:35
Nja, du hast ja nur ein paar Wahlmöglichkeiten.

Ein Datenobjekt pro Tabelle, mit den nötigen Gemeinsamkeiten, und dort dann die Connections (DBMS) und Statements wechseln, je nach Ziel.
Oder je möglichem Ziel ein neues Datenobjekt und dann zur Laufzeit je nach Ziel auswählen was erstellt werden soll.
Bzw. eine Mischung, also je nach DBMS ein Objekt und die Versionsunterschiede mit entsprechenden SQLs.

Fehlende Felder entweder ignorieren (im Programm nicht benutzen)
oder Dummy-Felder. (Join auf Tabelle, bzw. garnicht mit etwas in der DB verbunden)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (17. Okt 2020 um 17:39 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
761 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 19. Okt 2020, 11:59
Der Vorteil eines ORMs wie Aurelius ist ja unter anderem, dass es aus den Tabellen Klassen macht und diese zur Compile-Time geprüft werden. Wenn jetzt jeder Kunde eine andere Tabellenstruktur hat, hilft dir das ORM da nicht so gut weiter, weil du ja je Kunde eine andere Klasse brauchst.

Das AUTOMAPPING hilft dir nur insofern, als dass du nicht explizit angeben musst, wie die Klasse auf die Tabelle abgebildet werden muss, sondern dass das aus den Namen der Properties abgeleitet wird.

Wie sehr bzw wodurch unterscheiden sich denn die Tabellen je Kunde?
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
966 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: TMS Aurelius: Best practices für unterschiedliche Tabellenstrukturen(versionsabhä

  Alt 19. Okt 2020, 21:58
@TigerLilly,

Danke für deine Erklärungen!
Bei all den Änderungen der Tabellen, ist der Spaltenname immer gleich geblieben. Was sich bei den Tabellen ändert sind entweder neue Spalten oder der Datentyp bestehender Spalten. Z.B. hat sich die Spalte "Datum" von string(yyyymmdd) geändert in Date oder Datetime2.
Gerade bei der Datumsspalte ändert sich ja dann oftmals die Art der SQL Abfrage.

Meine momentane Idee ist, dass ich das Tabellen-Schema auslese. Dann habe ich ja die Bezeichnung der Spalten und die Datentypen. Evtl. bietet das ORM da auch schon was.

Z.B für Insert-Befehle in anderen Projekten habe ich mir schon unabhängig vom ORM eine Unit gebastelt, die genau das macht und dann dafür auch vorbelegte Nullwerte setzt.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf