Class SqlQueryVisitor
This base visitor implements:
- tracking of replaced elemnents with GetReplacement(IQueryElement, out IQueryElement?) API to access replacements;
- changes element's Transform to Modify for already replaced element;
- provides ProcessElement(IQueryElement) API to re-visit element;
- skips visit of replaced element.
public abstract class SqlQueryVisitor : QueryElementVisitor
- Inheritance
-
SqlQueryVisitor
- Derived
- Inherited Members
- Extension Methods
Constructors
SqlQueryVisitor(VisitMode, IVisitorTransformationInfo?)
protected SqlQueryVisitor(VisitMode visitMode, SqlQueryVisitor.IVisitorTransformationInfo? transformationInfo)
Parameters
visitModeVisitModetransformationInfoSqlQueryVisitor.IVisitorTransformationInfo
Methods
AddReplacements(IReadOnlyDictionary<IQueryElement, IQueryElement>)
Adds explicit replacement map.
protected void AddReplacements(IReadOnlyDictionary<IQueryElement, IQueryElement> replacements)
Parameters
replacementsIReadOnlyDictionary<IQueryElement, IQueryElement>
Cleanup()
Resets visitor to initial state.
public virtual void Cleanup()
GetReplacement(IQueryElement, out IQueryElement?)
Returns replacement element for element if it was registered as replaced.
protected bool GetReplacement(IQueryElement element, out IQueryElement? replacement)
Parameters
elementIQueryElementreplacementIQueryElement
Returns
GetReplacements(Dictionary<IQueryElement, IQueryElement>)
Writes registered replacement pairs to objectTree dictionary.
public void GetReplacements(Dictionary<IQueryElement, IQueryElement> objectTree)
Parameters
objectTreeDictionary<IQueryElement, IQueryElement>
GetTransformationInfo()
protected SqlQueryVisitor.IVisitorTransformationInfo GetTransformationInfo()
Returns
GetVisitMode(IQueryElement)
Gets visit mode for query element. Could be overridden to enable element visit mode, which differ from visitor-level mode set by VisitMode.
public override VisitMode GetVisitMode(IQueryElement element)
Parameters
elementIQueryElement
Returns
NotifyReplaced(IQueryElement, IQueryElement)
Remembers element replacement.
public override IQueryElement NotifyReplaced(IQueryElement newElement, IQueryElement oldElement)
Parameters
newElementIQueryElementoldElementIQueryElement
Returns
ProcessElement(IQueryElement)
Visits element and correct it, if it contains old replaced elements.
public virtual IQueryElement ProcessElement(IQueryElement element)
Parameters
elementIQueryElement
Returns
SetTransformationInfo(IVisitorTransformationInfo?)
protected void SetTransformationInfo(SqlQueryVisitor.IVisitorTransformationInfo? transformationInfo)
Parameters
transformationInfoSqlQueryVisitor.IVisitorTransformationInfo
Visit(IQueryElement?)
Visitor dispatch method.
public override IQueryElement? Visit(IQueryElement? element)
Parameters
elementIQueryElement
Returns
VisitCteClauseReference(CteClause)
Main CteClause visitor is VisitCteClause(CteClause) and called for it from SqlWithClause. This by-ref visitor used for references from SqlCteTable.
protected override IQueryElement VisitCteClauseReference(CteClause element)
Parameters
elementCteClause