ORDA: Von einer Entity auf die Dataclass kommen

Und schon wieder einer…

Und das optimistic locking generisch abzufedern, würde ich gern beim Speichern einer Entity innerhalb einer Methode die aktuelle Entity per .diff() mit der gespeicherten vergleichen, dazu muss ich aber die Dataclass haben…

Danke

Wolfgang Kunckel

Zur wörtlichen Frage:
es gibt derzeit keine Möglichkeit von einer Entity-Variablen die Klasse abzuleiten (offenes Feature Request).

Zur Idee der Frage:

Dazu benötigt man das doch gar nicht?
Haben Sie sich das Beispiel zu .diff angeschaut?
https://doc.4d.com/4Dv17R4/4D/17-R4/entitydiff.305-4055338.en.html

Wenn Sie den Unterschied zum ursprünglichen Zustand wollen, rufen Sie am Anfang, bevor der Anwender etwas ändern kann, .clone() auf (und das dann Form.original oder ähnlich zuweisen und so merken).
Wenn Sie den Unterschied zum Jetztzustand wollen, dann von der aktuellen Entity per .clone() eine Kopie, dann per .reload() Update vom Server anfordern und das per .diff vergleichen.

.reload() geht schneller als erneut zu suchen…

Hallo Herr Maul!

Die Idee dahinter war, die Entity zu sichern

$status:=$myEntity.save(dk auto merge)
Und dann (aus den Schulungsunterlagen von JPR) das machen:

$savedEmployee:=$dataclass.get($employee.getKey())
$conflicts:=$employee.diff($savedEmployee)

Das Ganze verpackt in eine Methode

Code :
If (obj_CheckSave ($status;$myEntity))

End if 

und in der dann

If (Not($1.success))
Case of
: ($1.status=dk status automerge failed)
// Anzeigen, machen, tun.
$0:=False
End case
Else
$0:=True
End if

Wenn Sie so vorgehen wollen müssen Sie in einer Variablen (alternativ Form) den Namen der Dateclass sowie den Primary Key merken.

Die genannte Alternative mit .clone und reload benötigt das nicht.

Beide Varianten führen zum Ziel…