Interface used by extenders that can be part of a dot-syntax provider
public interface IArchiveProviderDynamicExtend
Dot syntax extenders offer columns, but have their joins generated by a parser that understands syntax like contact.associate_id.person_id.firstname. Such extenders must implement this interface, and be marked with a DynamicExtenderAttribute that defines which table the extender handles.
A dynamic extender must also implement IArchiveExtender.
SetDynamicJoin(String, String, ArchiveJoinType)
Define the join relation between this extender and the parent.
void SetDynamicJoin(string tableName, string fieldName, ArchiveJoinType joinType)
Name of the foreign key table
Name of the foreign key field
Type of join
How the parent is specified is not part of this interface, see IArchiveProviderDoesExtend for that. This method is used to specify - without referring to table/field objects, because these are not known at the time of call - how this extender is linked to its parent. During the ModifyQuery phase of processing, this information will be used to instantiate a concrete join of some kind.
The table and field name specified here may be either a field handled by the parent (left outer join, inner join), or a field handled by this extender (right outer join, inner join). Implementations must examine their own and the parents' table to determine which direction is requested.