public override DbExpression Visit(DbApplyExpression expression) { Check.NotNull(expression, "expression"); DbExpression result = expression; var newInput = VisitExpressionBindingEnterScope(expression.Input); var newApply = VisitExpressionBinding(expression.Apply); ExitScope(); if (!ReferenceEquals(expression.Input, newInput) || !ReferenceEquals(expression.Apply, newApply)) { if (DbExpressionKind.CrossApply == expression.ExpressionKind) { result = CqtBuilder.CrossApply(newInput, newApply); } else { Debug.Assert( expression.ExpressionKind == DbExpressionKind.OuterApply, "DbApplyExpression had ExpressionKind other than CrossApply or OuterApply?"); result = CqtBuilder.OuterApply(newInput, newApply); } } NotifyIfChanged(expression, result); return(result); }