Table inheritance is controlled by the following properties:
- SupportInheritance – specifies if a table is a part of a hierarchy.
- InstanceRelationType – specifies the field that is used as a type discriminator. TableIds of concrete types are used as values of the InstanceRelationType field.
- Abstact – specifies if a table is abstract. Tables without derived tables cannot be abstract.
- Extends – specifies table’s parent.
Polymorphism is supported for table methods. All tables instance methods are virtual.
There is also client support for table hierarchies. Whenever a table that has derived tables is added on a form as a datasource, all its children are added under the derived datasources node. Fields from derived datasources can be bound to form controls and derived datasources can be used in form query construction, e.g. other datasources can be joined to derived ones.
Whenever a “New record” action is invoked on a form control that is bound to an abstract table, the following dialog will be presented to user where it is possible to select the concrete type of the record being created.