Hi, consider this peace of Schema generated by Data Modeler:
interface
type
TProduct = class;
TPerProd = class;
TAZ_Prod = class;
TSchPPro = class;
...
[Entity]
[Table('Product')]
[Inheritance(TInheritanceStrategy.JoinedTables)]
[Sequence('Id_Product')]
[Id('FId', TIdGenerator.IdentityOrSequence)]
TProduct = class
private
[Column('Id', [TColumnProp.Required])]
FId: Int64;
[ManyValuedAssociation([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate, TCascadeType.Merge], 'FProductId')]
FAZ_ProdList: Proxy<TList<TAZ_Prod>>;
function GetAZ_ProdList: TList<TAZ_Prod>;
public
constructor Create;
destructor Destroy; override;
property Id: Int64 read FId write FId;
property AZ_ProdList: TList<TAZ_Prod> read GetAZ_ProdList;
end;
[Entity]
[Table('PerProd')]
[PrimaryJoinColumn('Id')]
TPerProd = class(TProduct)
private
[ManyValuedAssociation([TAssociationProp.Lazy, TAssociationProp.Required], [TCascadeType.SaveUpdate, TCascadeType.Merge], 'FPerProdId')]
FSchPProList: Proxy<TList<TSchPPro>>;
function GetSchPProList: TList<TSchPPro>;
public
constructor Create;
destructor Destroy; override;
property SchPProList: TList<TSchPPro> read GetSchPProList;
end;
[Entity]
[Table('AZ_Prod')]
[Sequence('Id_AZ_Prod')]
[Id('FId', TIdGenerator.IdentityOrSequence)]
TAZ_Prod = class
private
[Column('Id', [TColumnProp.Required])]
[Description('')]
FId: Int64;
[Association([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll - [TCascadeType.Remove])]
[JoinColumn('ProductId', [TColumnProp.Required], 'Id')]
FProductId: Proxy<TProduct>;
[Association([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll - [TCascadeType.Remove])]
[JoinColumn('AccZoneId', [TColumnProp.Required], 'Id')]
FAccZoneId: Proxy<TAccZone>;
function GetProductId: TProduct;
procedure SetProductId(const Value: TProduct);
function GetAccZoneId: TAccZone;
procedure SetAccZoneId(const Value: TAccZone);
public
property Id: Int64 read FId write FId;
property RecVersion: TDateTime read FRecVersion write FRecVersion;
property ProductId: TProduct read GetProductId write SetProductId;
property AccZoneId: TAccZone read GetAccZoneId write SetAccZoneId;
end;
[Entity]
[Table('SchPPro')]
[PrimaryJoinColumn('Id')]
TSchPPro = class(TSchedul)
private
[Association([TAssociationProp.Lazy, TAssociationProp.Required], CascadeTypeAll - [TCascadeType.Remove])]
[JoinColumn('PerProdId', [TColumnProp.Required], 'Id')]
FPerProdId: Proxy<TPerProd>;
function GetPerProdId: TPerProd;
procedure SetPerProdId(const Value: TPerProd);
public
property PerProdId: TPerProd read GetPerProdId write SetPerProdId;
end;
...
implementation
function TProduct.GetAZ_ProdList: TList<TAZ_Prod>;
begin
result := FAZ_ProdList.Value;
end;
constructor TPerProd.Create;
begin
inherited; // inherited added manually
FSchPProList.SetInitialValue(TList<TSchPPro>.Create);
end;
constructor TProduct.Create;
begin
FAZ_ProdList.SetInitialValue(TList<TAZ_Prod>.Create);
FProdCmpList.SetInitialValue(TList<TProdCmp>.Create);
FProdClaList.SetInitialValue(TList<TProdCla>.Create);
end;
...
end.
I'm try to create TPerProd but don't have access to AZ_ProdList, maybe Data modeler should add inherited on constructor TPerProd.Create?
Maybe i'm missing something...
Add manually "inherited" every time schema is generated by data module, is not an option.
Indeed calling base constructor was missing. This has been fixed, you can update to version 2.6.1 now.