I looked into OpenEdge.BusinessLogic.BusinessEntity.cls and there is something that I don't understand.
A business entity like "CustomerEntity" has a contructor like:
{"customerentity.i"}
CONSTRUCTOR PUBLIC CustomerEntity():
SUPER (DATASET dsCustomer:HANDLE).
Super (ds) sets the ProDataSet property to the static dataset of the CustomerEntity.
CONSTRUCTOR PROTECTED BusinessEntity(INPUT hDS AS HANDLE):
ProDataSet = hDS.
END CONSTRUCTOR.
Methods like CreateCustomerEntity, get a (change) dataset from outside as input-output. So the actual content of the static dataset is the changed content and this data is also what ProDatasetHandle sees.
METHOD PUBLIC VOID CreateCustomerEntity(INPUT-OUTPUT DATASET dsCustomer):
SUPER:CreateData(DATASET dsCustomer BY-REFERENCE).
END METHOD.
The Super:CreateData() method passes the static dataset again to the super class, but it's never used. The super logic always seems to use ProDatasetHandle.
METHOD PROTECTED VOID CreateData(INPUT-OUTPUT DATASET-HANDLE hDataSet):
THIS-OBJECT:AttachDataSources().
THIS-OBJECT:CommitData(ROW-CREATED).
FINALLY:
THIS-OBJECT:DetachDataSources().
END FINALLY.
END METHOD.
Am I missing something here?