protected override Expression VisitSqlFunction(SqlFunctionExpression sqlFunctionExpression) { Check.NotNull(sqlFunctionExpression, nameof(sqlFunctionExpression)); var canOptimize = _canOptimize; _canOptimize = false; if (sqlFunctionExpression.IsBuiltIn && string.Equals(sqlFunctionExpression.Name, "COALESCE", StringComparison.OrdinalIgnoreCase)) { _isNullable = false; var newLeft = (SqlExpression)Visit(sqlFunctionExpression.Arguments[0]); var leftNullable = _isNullable; _isNullable = false; var newRight = (SqlExpression)Visit(sqlFunctionExpression.Arguments[1]); var rightNullable = _isNullable; _isNullable = leftNullable && rightNullable; _canOptimize = canOptimize; return(sqlFunctionExpression.Update(sqlFunctionExpression.Instance, new[] { newLeft, newRight })); } var newInstance = (SqlExpression)Visit(sqlFunctionExpression.Instance); var newArguments = new SqlExpression[sqlFunctionExpression.Arguments.Count]; for (var i = 0; i < newArguments.Length; i++) { newArguments[i] = (SqlExpression)Visit(sqlFunctionExpression.Arguments[i]); } _canOptimize = canOptimize; // TODO: #18555 _isNullable = true; return(sqlFunctionExpression.Update(newInstance, newArguments)); }
private SqlFunctionExpression VisitSqlFunctionExpression(SqlFunctionExpression sqlFunctionExpression) { var newInstance = (SqlExpression)Visit(sqlFunctionExpression.Instance); var isNullable = _isNullable; var newArguments = new SqlExpression[sqlFunctionExpression.Arguments.Count]; for (var i = 0; i < newArguments.Length; i++) { newArguments[i] = (SqlExpression)Visit(sqlFunctionExpression.Arguments[i]); isNullable |= _isNullable; } _isNullable = isNullable; return(sqlFunctionExpression.Update(newInstance, newArguments)); }
protected override Expression VisitSqlFunction(SqlFunctionExpression sqlFunctionExpression) { var parentSearchCondition = _isSearchCondition; _isSearchCondition = false; var instance = (SqlExpression)Visit(sqlFunctionExpression.Instance); var arguments = new SqlExpression[sqlFunctionExpression.Arguments.Count]; for (var i = 0; i < arguments.Length; i++) { arguments[i] = (SqlExpression)Visit(sqlFunctionExpression.Arguments[i]); } _isSearchCondition = parentSearchCondition; var newFunction = sqlFunctionExpression.Update(instance, arguments); var condition = string.Equals(sqlFunctionExpression.FunctionName, "FREETEXT") || string.Equals(sqlFunctionExpression.FunctionName, "CONTAINS"); return(ApplyConversion(newFunction, condition)); }
protected override Expression VisitSqlFunction(SqlFunctionExpression sqlFunctionExpression) { var canOptimize = _canOptimize; _canOptimize = false; var newInstance = (SqlExpression)Visit(sqlFunctionExpression.Instance); var newArguments = new SqlExpression[sqlFunctionExpression.Arguments.Count]; for (var i = 0; i < newArguments.Length; i++) { newArguments[i] = (SqlExpression)Visit(sqlFunctionExpression.Arguments[i]); } _canOptimize = canOptimize; // TODO: #18555 _isNullable = true; return(sqlFunctionExpression.Update(newInstance, newArguments)); }
protected override Expression VisitSqlFunction(SqlFunctionExpression x) { return(x?.Update(x.Instance.VisitNode(this) as SqlExpression, x.Arguments.VisitAll(this))); }