/// <inheritdoc /> protected override Expression VisitDistinctSql(DistinctSqlExpression distinctSqlExpression) { Check.NotNull(distinctSqlExpression, nameof(distinctSqlExpression)); _relationalCommandBuilder.Append("DISTINCT ("); Visit(distinctSqlExpression.Operand); _relationalCommandBuilder.Append(")"); return(distinctSqlExpression); }
/// <inheritdoc /> public virtual SqlExpression ApplyTypeMapping(SqlExpression sqlExpression, RelationalTypeMapping typeMapping) { #pragma warning disable IDE0046 // Convert to conditional expression if (sqlExpression == null #pragma warning restore IDE0046 // Convert to conditional expression || sqlExpression.TypeMapping != null) { return(sqlExpression); } return(sqlExpression switch { CaseExpression e => ApplyTypeMappingOnCase(e, typeMapping), CollateExpression e => ApplyTypeMappingOnCollate(e, typeMapping), DistinctSqlExpression e => ApplyTypeMappingOnDistinctSql(e, typeMapping), LikeExpression e => ApplyTypeMappingOnLike(e), SqlBinaryExpression e => ApplyTypeMappingOnSqlBinary(e, typeMapping), SqlUnaryExpression e => ApplyTypeMappingOnSqlUnary(e, typeMapping), SqlConstantExpression e => e.ApplyTypeMapping(typeMapping), SqlFragmentExpression e => e, SqlFunctionExpression e => e.ApplyTypeMapping(typeMapping), SqlParameterExpression e => e.ApplyTypeMapping(typeMapping), _ => sqlExpression });
/// <summary> /// Visits the children of the distinct SQL expression. /// </summary> /// <param name="distinctSqlExpression"> The expression to visit. </param> /// <returns> The modified expression, if it or any subexpression was modified; otherwise, returns the original expression. </returns> protected abstract Expression VisitDistinctSql([NotNull] DistinctSqlExpression distinctSqlExpression);