Class SelectionCombinedContactProviderBase<Extender>
Inheritance
Implements
Inherited Members
Namespace: SuperOffice.CRM.ArchiveLists
Assembly: SoDataBase.dll
Syntax
public class SelectionCombinedContactProviderBase<Extender> : QueryProviderBase<ArchiveRow>, IArchiveProviderQueryMapping, IArchiveQueryProvider, IArchiveProviderExtensible, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities where Extender : SelectionCombinedContactPersonExtenderBase, new()
Type Parameters
Name | Description |
---|---|
Extender |
Constructors
SelectionCombinedContactProviderBase()
Declaration
public SelectionCombinedContactProviderBase()
SelectionCombinedContactProviderBase(Extender)
Declaration
public SelectionCombinedContactProviderBase(Extender extender)
Parameters
Type | Name | Description |
---|---|---|
Extender | extender |
Properties
InhibitDistinctPrimaryKeys
Override: We do our own checking here
Declaration
public override bool InhibitDistinctPrimaryKeys { get; }
Property Value
Type | Description |
---|---|
bool |
Overrides
IsInPersonMode
Is the provider operating in Person mode; if false, Contact mode is running
Declaration
public bool IsInPersonMode { get; }
Property Value
Type | Description |
---|---|
bool |
PrimaryTable
The primary table of this archive provider, from the derived class
Declaration
public override TableInfo PrimaryTable { get; }
Property Value
Type | Description |
---|---|
TableInfo |
Overrides
Query
The main query of this archive provider, from the derived class
Declaration
public override ArchiveSelect Query { get; }
Property Value
Type | Description |
---|---|
ArchiveSelect |
Overrides
RootExtenders
Implement this property to return the extender(s) that form the root of the query tree, or null if that is not meaningful. This property is used by the dynamic column processing, which will fail and throw an exception if null is returned here (no problem if dynamic column syntax is not used)
Declaration
protected override List<IArchiveExtender> RootExtenders { get; }
Property Value
Type | Description |
---|---|
List<IArchiveExtender> |
Overrides
Methods
AcceptRow(SoDataReader)
Decide whether the current row of the passed-in _reader should be accepted or not. If false is returned, this row is skipped by the base class and never seen by the client. This method is called very early, before any ArchiveRow population, and can only rely on fields directly accessible in the Reader. On the other hand, that makes is reasonably cheap to skip rows.
If you implement this method, you MUST aslo implement RequiredPhaseOneFields() to tell the query rewriter about fields you need, otherwise they will not be present in the phase one query and you will crash.Declaration
protected override bool AcceptRow(SoDataReader reader)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader |
Returns
Type | Description |
---|---|
bool | true if the current row should be further processed |
Overrides
InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
Derived classes should implement the population of ColumnData items for columns that are NOT handled by this base class in this method. Whether a column is handled by this base class is part of its database binding information, set by the various MapXXX methods.
Declaration
protected override void InnerPopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | Data reader with the query result (one row) |
ArchiveRow | row | archive row to be populated |
Overrides
PostProcessQuery()
The desired primary key of the query is usually the primary key of the root table... BUT: If this is a person search, then it's actually the person id. That logic is implemented in the FindContactProvider, here we propagate the result to the QueryProviderBase, so it knows what to use
Declaration
public override void PostProcessQuery()
Overrides
PostProcessRow(SoDataReader, ArchiveRow)
This method is a hook that can be used by derived classes to post-process rows. It is called after all extenders have fetched their data and populated the row.
Declaration
protected override void PostProcessRow(SoDataReader reader, ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
ArchiveRow | row |