... ich würde mal so sagen: Das Transaction-Prinzip arbeitet nach der MVVM-Methodik --
Model->View | View->Model
Diese Methodik ist im Arbeiten mit Datenbanken üblich, eine Zeichnung ist nichts anderes.
Die Daten in einer Datenbank sind in aller Regel darauf ausgelegt, dass diese effektiv und nicht redundand gespeichert sind. Eine vollständige Objektbeschreibung erhält man erst durch Interpretation der Daten und derer Abhängigkeiten. In der Praxis benötigt man selten die Sicht auf die Daten, wie diese in der Datenbank abgelegt sind, sondern man schaut sich die Daten vor dem Hintergrund einer zu erledigenden Aufgabe an --> View. Es ist also üblich, verschiedene Sichte auf die Daten zu definieren, was letztendlich auch die Basis einer schnellen Datenbankanwendung ist.
View ist also an dieser Stelle nicht als Ansicht im Sinne von AutoCAD-Ansicht zu verstehen, sondern als Ansicht auf das Datenmodell.
Das wäre das erste MV = Model->View.
Der Prozess, der zur Erledigung der Aufgabe abgearbeitet werden muss, findet nun in der View statt, die man ausgelesen hat. Das Prozessergebnis muss aber auch wieder zurück in die Datenbank, das ist das VM = View->Model.
Soll heißen, sein Code arbeitet die ganze Zeit in einer speziellen Sicht auf das Model. Die Elemente aus dem Modell holst du mit Transaction.GetObject(..) in die aktuelle Sicht. In dieser Ansicht auf das Datenmodell kannst du machen was du willst, solange du aus dieser Sicht nichts in das Modell zurück bringst, bleibt das Modell unverändert. Das Zurückbringen in das Modell erfolgt zweistufig:
-> Transaction.AddNewlyCreatedDBObject() fügt das Object an die richtige Stelle der Datenbank ein
-> Transaction.Commit() speichert die Änderungen an der Datenbank.
Klingt zunächst kompliziert, sollte aber unbedingt verstanden und auch für die eigene Arbeitsweise verinnerlicht werden, denn das ist das ultimative Grundverständnis für die objektorientierte Programmierung. Ich gehe in meinen AutoCAD-Programmen soweit, dass ich mir immer auch eine eigene, auf die Aufgabe passende View erstelle. Das macht den Code am Ende nicht nur lesbarer, sondern bewirkt, dass ich meine eigenen Code-Bibliotheken für die Kommunikation mit AutoCAD effektiv nutzen kann.
Der Code wird dadurch recht kleinteilig und die Kommunikation mit der AutoCAD-Datenbank funktioniert immer passend zur jeweiligen zu erledigenden Prozessaufgabe. Code-Änderungen sollten keinen Einfluss auf andere Prozessaufgaben haben, Erweiterungen der Aufgabenstellung lassen sich ohne Änderung der bereits existierenden Prozesse hinzufügen.
Ich hoffe, das ist soweit verständlich.
Grüße!
Holger
------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP