/// <summary> /// Accept an expression visitor /// </summary> /// <param name="visitor">The expression visitor</param> public virtual void Accept(IExpressionVisitor visitor) { if (visitor == null) { throw new ArgumentNullException("visitor"); } visitor.Visit(this); }
public override void Accept(IExpressionVisitor visitor) { Require.NotNull(visitor, "visitor"); visitor.Visit(this); }
public override T Accept <T, C>(IExpressionVisitor <T, C> visitor, C context) { return(visitor.Visit(this, context)); }
protected virtual Expression Visit(IExpressionVisitor visitor) { return visitor.Visit(this); }
public void Accept(IExpressionVisitor v) { v.Visit(this); }
public override TResult Accept <TResult, TContext>( IExpressionVisitor <TResult, TContext> visitor, TContext environment) { return(visitor.Visit(this, environment)); }
//--------------------------------------------------------------------- internal override T Accept <T>(IExpressionVisitor <T> visitor) => visitor.Visit(this);
public override void Accept <T>(IExpressionVisitor <T> visitor, T context) { visitor.Visit(this, context); }
public void Accept(IExpressionVisitor visitor) => visitor.Visit(this);
public void Visit(IExpressionVisitor visitor) { visitor.Visit(this); }
protected internal override void AcceptVisitor(IExpressionVisitor visitor) { EnsureArg.IsNotNull(visitor, nameof(visitor)); visitor.Visit(this); }
void IExpression.Accept(IExpressionVisitor visitor) { visitor.Visit(this); }
public virtual TR Accept <TR>(IExpressionVisitor <TR> visitor, string context) => visitor.Visit(this, context);
protected override void OnVisit(IExpressionVisitor visitor, UpsertStatement statement) { if (statement.Returning != null && statement.Returning.Table != null) { visitor.Visit(statement.Returning.Table); } const string SOURCE_ALIAS = "SRC"; if (statement.Fields == null || statement.Fields.Count == 0) { throw new DataException("Missing required fields in the upsert statment."); } visitor.Output.Append("MERGE INTO "); visitor.Visit(statement.Table); visitor.Output.AppendLine(" USING (SELECT "); for (int i = 0; i < statement.Values.Count; i++) { if (i > 0) { visitor.Output.Append(","); } visitor.Visit(statement.Values[i]); } visitor.Output.AppendLine(") AS " + SOURCE_ALIAS + " ("); for (int i = 0; i < statement.Fields.Count; i++) { if (i > 0) { visitor.Output.Append(","); } visitor.Output.Append(statement.Fields[i].Name); } visitor.Output.AppendLine(") ON"); for (int i = 0; i < statement.Entity.Key.Length; i++) { var field = Metadata.DataEntityPropertyExtension.GetFieldName(statement.Entity.Key[i], out _); if (i > 0) { visitor.Output.Append(" AND "); } if (string.IsNullOrEmpty(statement.Table.Alias)) { visitor.Output.Append($"{field}={SOURCE_ALIAS}.{field}"); } else { visitor.Output.Append($"{statement.Table.Alias}.{field}={SOURCE_ALIAS}.{field}"); } } if (statement.Updation.Count > 0) { visitor.Output.AppendLine(); visitor.Output.Append("WHEN MATCHED"); if (statement.Where != null) { visitor.Output.Append(" AND "); visitor.Visit(statement.Where); } visitor.Output.AppendLine(" THEN"); visitor.Output.Append("\tUPDATE SET "); int index = 0; foreach (var item in statement.Updation) { if (index++ > 0) { visitor.Output.Append(","); } visitor.Visit(item.Field); visitor.Output.Append("="); visitor.Visit(item.Value); } } visitor.Output.AppendLine(); visitor.Output.AppendLine("WHEN NOT MATCHED THEN"); visitor.Output.Append("\tINSERT ("); for (int i = 0; i < statement.Fields.Count; i++) { if (i > 0) { visitor.Output.Append(","); } visitor.Output.Append(visitor.Dialect.GetIdentifier(statement.Fields[i])); } visitor.Output.Append(") VALUES ("); for (int i = 0; i < statement.Fields.Count; i++) { if (i > 0) { visitor.Output.Append(","); } visitor.Output.Append(SOURCE_ALIAS + "." + statement.Fields[i].Name); } visitor.Output.Append(")"); //输出返回子句 this.VisitReturning(visitor, statement.Returning); visitor.Output.AppendLine(";"); }
public override void Accept(IExpressionVisitor visitor) { // using double dispatch visitor.Visit(this); }
protected virtual Expression Visit(IExpressionVisitor visitor) { return(visitor.Visit(this)); }
public virtual void Accept(IExpressionVisitor visitor) { visitor.Visit(this); }
public override T Accept <T>(IExpressionVisitor <T> visitor) { return(visitor.Visit(this)); }
public R Accept <R, S>(IExpressionVisitor <R, S> visitor, S scope) { return(visitor.Visit(this, scope)); }
public override TResult Accept <TResult>(IExpressionVisitor <TResult> visitor) { return(visitor.Visit(this)); }
public void Accept(IExpressionVisitor <T> visitor) { visitor.Visit(this); }
public override void Accept(IExpressionVisitor visitor) { visitor.Visit(this); }
/// <summary>When overriden in a derived class, accepts the specified visitor.</summary> /// <param name="visitor">The visitor to accept.</param> protected override void AcceptCore(IExpressionVisitor visitor) { visitor.Visit(this); }
public override TR Accept <TR>(IExpressionVisitor <TR> visitor, string context) => visitor.Visit(this, context);
public IExpression Accept(IExpressionVisitor visitor) { return(visitor.Visit(this)); }
public override void Accept(IExpressionVisitor visitor) { Operand.Accept(visitor); visitor.Visit(this); }
public void Visit(IExpressionVisitor <TContext> visitor) { visitor.Visit(this); }
public override T Accept <T>(IExpressionVisitor <T> checker) { return(checker.Visit(this)); }
/// <summary> /// Visits the <paramref name="visitor"/> based upon the type of the /// <see cref="IExpression"/>. /// </summary> /// <param name="visitor">The <see cref="IIntermediateTreeVisitor"/> /// to visit.</param> /// <remarks>In this instance visits the <paramref name="visitor"/> /// through <see cref="IExpressionVisitor.Visit(ITypeReferenceExpression)"/>.</remarks> /// <exception cref="System.ArgumentNullException">thrown when <paramref name="visitor"/> /// is null.</exception> public void Accept(IExpressionVisitor visitor) { //ToDo: Fix #2. visitor.Visit(this); }