Es gibt eine generische Methode zum Klonen von Datensätzen: OrmBABase.Clone()
.
Diese Methode erstellt logisch gesehen eine Kopie der ORMs. Die Kopie enthält standardmäßig
- alle persistenten Eigenschaften,
- alle Teildatensätze, ebenfalls als Kopie, da diese fest zu einem ORM gehören,
- alle Attachments und
- alle Source-Relationen. Die dabei referenzierten Objekte werden natürlich nicht kopiert.
Nicht geklont werden:
- Die Record History,
- MigrationID und
- andere mit `[PropertyNotClonable]` gekennzeichnete Ausnahmen.
Wenn man diese Funktionalität nutzen möchte, muss man darauf achten, dass für den gewünschten ORM-Typ gegebenenfalls Ausnahmen mit `[PropertyNotClonable]` definiert werden müssen. Das ist vor allem bei ID-Properties aus externen Systemen (Beispiel MigrationID) oder bei programmierten XPO-Relation zu anderen, klonbaren Typen zu empfehlen.
Auch Teildatensätze selbst können geklont werden (OrmSubBABase.Clone
). Dabei wird ein neuer Teildatensatz erstellt, der zunächst nicht zu einem Eltern-Datensatz gehört. Das muss danach über das Hinzufügen zu einer Teildatensatz-Collection erledigt werden.