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));
        }
Exemple #2
0
        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);
        }