Root / Assembly / ARCQuery / Class / CompoundKey
|_Member||FollowingFunctionKeys, Parse, TryGetP, TryGetPInternal|
|Description||A class able to expand the concept of keys.|
Direct sub classes are (ordered in order of priority by Parse):
1) ForeignKey: Can find related values, like for an Order, it can find Customer.FirstName.
2) EntityMethodKey: Key able to call entity read-only methods with a TryGet with data storage signature.
3) NewKey: Creates new keys, like 'CountP' (see NewKeyCountP.)
4) -AggregateKey- TODO: Implement this.
Closely related classes (Stored inside CompoundKey as members FollowingFunctionKeys and QuantileKey) are:
1) FunctionKey: Extracts data from an already existing value like 'Created.Year()' (see FunctionKeyYear)
2) QuantileKey: Can separate entities into quantiles, like Quartiles, Quintiles or Sextiles
(See also ValueComparer which can evaluation expressions like 'WHERE Created = ThisYear')
See common parser for all compound keys (Parse-) which will always 'succeed'.
TODO: Implement ITypeDescriber? Or, difficult because needs dataStorage for parsing?
Note how compound keys (and related keys) may be chained several levels deep, like for Order 'Customer.Created.Year()' or Customer.Order.Sum(Amount).
This is reflected in Parse and FollowingFunctionKeys.
|LongDescription||About chaining of keys (use of FollowingFunctionKeys):|
QuantileKey can only be the last key in a chain, like 'Customer.OrderSum.QUARTILE'.
All keys can be followed by a QuantileKey.
(this is not mentioned below and the -CompoundKey classes are not 'aware' of QuantilKey as a NextKey, not even the base class CompoundKey itself)
All keys can be followed by several FunctionKey (This is supported by TryGetP).
Generated 2020-10-13 11:11:07.487 UTC