I have a legacy DB with this Entity mapping:
[Entity]
[Table('TBLREZEPT')]
[Id('FREZEPTID', TIdGenerator.None)]
TTBLREZEPT = class
private
[Column('REZEPTID', [TColumnProp.Required, TColumnProp.NoUpdate])]
FREZEPTID: Integer;
[ManyValuedAssociation([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll , 'FREZEPTID')]
[Table('TBLREZEPT')]
[Id('FREZEPTID', TIdGenerator.None)]
TTBLREZEPT = class
private
[Column('REZEPTID', [TColumnProp.Required, TColumnProp.NoUpdate])]
FREZEPTID: Integer;
[ManyValuedAssociation([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll , 'FREZEPTID')]
FTBLREZEPTZUTATList: Proxy<TList<TTBLREZEPTZUTAT>>;
function GetTBLREZEPTZUTATList: TList<TTBLREZEPTZUTAT>;
public
property TBLREZEPTZUTATList: TList<TTBLREZEPTZUTAT> read GetTBLREZEPTZUTATList;
end;
[Entity]
[Table('TBLREZEPTZUTAT')]
[Id('FREZEPTID', TIdGenerator.None)]
[Id('FLFDNR', TIdGenerator.None)]
[Id('FREZEPTPOSID', TIdGenerator.None)]
TTBLREZEPTZUTAT = class
private
[Column('LFDNR', [TColumnProp.Required])]
FLFDNR: Integer;
[Column('REZEPTPOSID', [TColumnProp.Required, TColumnProp.NoUpdate])]
FREZEPTPOSID: Integer;
[Association([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll - [TCascadeType.Remove])]
[JoinColumn('REZEPTID', [TColumnProp.Required], 'REZEPTID')]
FREZEPTID: Proxy<TTBLREZEPT>;
...
function GetTBLREZEPTZUTATList: TList<TTBLREZEPTZUTAT>;
public
property TBLREZEPTZUTATList: TList<TTBLREZEPTZUTAT> read GetTBLREZEPTZUTATList;
end;
[Entity]
[Table('TBLREZEPTZUTAT')]
[Id('FREZEPTID', TIdGenerator.None)]
[Id('FLFDNR', TIdGenerator.None)]
[Id('FREZEPTPOSID', TIdGenerator.None)]
TTBLREZEPTZUTAT = class
private
[Column('LFDNR', [TColumnProp.Required])]
FLFDNR: Integer;
[Column('REZEPTPOSID', [TColumnProp.Required, TColumnProp.NoUpdate])]
FREZEPTPOSID: Integer;
[Association([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll - [TCascadeType.Remove])]
[JoinColumn('REZEPTID', [TColumnProp.Required], 'REZEPTID')]
FREZEPTID: Proxy<TTBLREZEPT>;
...
Trying this code
procedure TForm1.TestProcedure1;
var
Rezept: TTBLREZEPT;
zutat: TTBLREZEPTZUTAT;
begin
Rezept := TTBLREZEPT.Create();
Rezept.REZEPTID:=3;
Rezept.BEZEICHNUNG:='Test 01';
Rezept.SERIAL:=1;
zutat := TTBLREZEPTZUTAT.Create();
zutat.REZEPTID:=Rezept;
zutat.LFDNR:=1;
zutat.REZEPTPOSID:=2;
Rezept.TBLREZEPTZUTATList.Add(zutat);
mgr.Save(Rezept);
end;
var
Rezept: TTBLREZEPT;
zutat: TTBLREZEPTZUTAT;
begin
Rezept := TTBLREZEPT.Create();
Rezept.REZEPTID:=3;
Rezept.BEZEICHNUNG:='Test 01';
Rezept.SERIAL:=1;
zutat := TTBLREZEPTZUTAT.Create();
zutat.REZEPTID:=Rezept;
zutat.LFDNR:=1;
zutat.REZEPTPOSID:=2;
Rezept.TBLREZEPTZUTATList.Add(zutat);
mgr.Save(Rezept);
end;
generates this SQL:
[15.03.2020 13:01:07][Trace][Value: INSERT INTO TBLREZEPT (
REZEPTID, SERIAL, BEZEICHNUNG)
VALUES (
:A_REZEPTID, :A_SERIAL, :A_BEZEICHNUNG)][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_REZEPTID = "3" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_SERIAL = "1" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_BEZEICHNUNG = "Test 01" (ftString)][Type: string]
[15.03.2020 13:01:07][Trace][Value: UPDATE TBLREZEPTZUTAT SET
REZEPTID = :A_REZEPTID
WHERE REZEPTID = :p_1
AND HERKUNFTCD = :p_2
AND LEBENSMITTELCD = :p_3
AND LFDNR = :p_4
AND REZEPTPOSID = :p_5][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_REZEPTID = "3" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_1 = "3" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_2 = "BLS3.02" (ftString)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_3 = "B100000" (ftString)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_4 = "1" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_5 = "2" (ftInteger)][Type: string]
REZEPTID, SERIAL, BEZEICHNUNG)
VALUES (
:A_REZEPTID, :A_SERIAL, :A_BEZEICHNUNG)][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_REZEPTID = "3" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_SERIAL = "1" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_BEZEICHNUNG = "Test 01" (ftString)][Type: string]
[15.03.2020 13:01:07][Trace][Value: UPDATE TBLREZEPTZUTAT SET
REZEPTID = :A_REZEPTID
WHERE REZEPTID = :p_1
AND HERKUNFTCD = :p_2
AND LEBENSMITTELCD = :p_3
AND LFDNR = :p_4
AND REZEPTPOSID = :p_5][Type: string]
[15.03.2020 13:01:07][Trace][Value: A_REZEPTID = "3" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_1 = "3" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_2 = "BLS3.02" (ftString)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_3 = "B100000" (ftString)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_4 = "1" (ftInteger)][Type: string]
[15.03.2020 13:01:07][Trace][Value: p_5 = "2" (ftInteger)][Type: string]
Which obviously is wong. How can I make the child records to be inserted?
tx for support!