public virtual DbExpression Visit(DbExpression dbExpression)
{
if (dbExpression.IsNull())
return dbExpression;
var expressionType = dbExpression.ExpressionType;
switch (expressionType)
{
case DbExpressionType.Function:
return VisitFunctionExpression((DbFunctionExpression)dbExpression);
case DbExpressionType.Select:
return VisitSelectExpression((DbSelectExpression)dbExpression);
case DbExpressionType.Update:
return VisitUpdateExpression((DbUpdateExpression)dbExpression);
case DbExpressionType.Insert:
return VisitInsertExpression((DbInsertExpression)dbExpression);
case DbExpressionType.Delete:
return VisitDeleteExpression((DbDeleteExpression)dbExpression);
case DbExpressionType.Column:
return VisitColumnExpression((DbColumnExpression)dbExpression);
case DbExpressionType.Table:
return VisitTableExpression((DbTableExpression)dbExpression);
case DbExpressionType.Binary:
return VisitBinaryExpression((DbBinaryExpression)dbExpression);
case DbExpressionType.Constant:
return VisitConstantExpression((DbConstantExpression)dbExpression);
case DbExpressionType.Alias:
return VisitAliasExpression((DbAliasExpression)dbExpression);
case DbExpressionType.Concat:
return VisitConcatExpression((DbConcatExpression)dbExpression);
case DbExpressionType.Conditional:
return VisitConditionalExpression((DbConditionalExpression)dbExpression);
case DbExpressionType.Exists:
return VisitExistsExpression((DbExistsExpression)dbExpression);
case DbExpressionType.List:
return VisitListExpression((DbListExpression)dbExpression);
case DbExpressionType.Batch:
return VisitBatchExpression((DbBatchExpression)dbExpression);
case DbExpressionType.In:
return VisitInExpression((DbInExpression)dbExpression);
case DbExpressionType.Query:
return VisitQueryExpression((DbQuery)dbExpression);
case DbExpressionType.Join:
return VisitJoinExpression((DbJoinExpression)dbExpression);
case DbExpressionType.Unary:
return VisitUnaryExpression((DbUnaryExpression)dbExpression);
case DbExpressionType.OrderBy:
return VisitOrderByExpression((DbOrderByExpression)dbExpression);
case DbExpressionType.Prefix:
return VisitPrefixExpression((DbPrefixExpression)dbExpression);
case DbExpressionType.Sql:
return VisitSqlExpression((DbSqlExpression)dbExpression);
}
throw new ArgumentOutOfRangeException(
"dbExpression",
string.Format("The expression type '{0}' is not supported", dbExpression.ExpressionType));
}