private SqlExpression ApplyTypeMappingOnMySqlBinary( MySQLBinaryExpression sqlBinaryExpression, RelationalTypeMapping typeMapping) { var left = sqlBinaryExpression.Left; var right = sqlBinaryExpression.Right; Type resultType; RelationalTypeMapping resultTypeMapping; RelationalTypeMapping inferredTypeMapping; switch (sqlBinaryExpression.OperatorType) { case MySQLBinaryExpressionOperatorType.IntegerDivision: { inferredTypeMapping = typeMapping ?? ExpressionExtensions.InferTypeMapping(left, right); resultType = left.Type; resultTypeMapping = inferredTypeMapping; } break; default: throw new InvalidOperationException("Incorrect OperatorType for MySQLBinaryExpression"); } return(new MySQLBinaryExpression( sqlBinaryExpression.OperatorType, ApplyTypeMapping(left, inferredTypeMapping), ApplyTypeMapping(right, inferredTypeMapping), resultType, resultTypeMapping)); }
public Expression VisitMySQLBinaryExpression(MySQLBinaryExpression mySqlBinaryExpression) { Sql.Append("("); Visit(mySqlBinaryExpression.Left); Sql.Append(")"); switch (mySqlBinaryExpression.OperatorType) { case MySQLBinaryExpressionOperatorType.IntegerDivision: Sql.Append(" DIV "); break; default: throw new ArgumentOutOfRangeException(); } Sql.Append("("); Visit(mySqlBinaryExpression.Right); Sql.Append(")"); return(mySqlBinaryExpression); }