Пример #1
0
        public void NumberExpression()
        {
            var ordering1 = new Ordering(Expression.Constant("order1"), OrderingDirection.Asc);
            var ordering2 = new Ordering(Expression.Constant("order2"), OrderingDirection.Desc);
            var sqlRowNumberRÉxpression =
                new SqlRowNumberExpression(
                    new[]
            {
                ordering1,
                ordering2
            });

            _stageMock
            .Expect(mock => mock.GenerateTextForOrdering(_commandBuilder, ordering1))
            .WhenCalled(mi => ((SqlCommandBuilder)mi.Arguments[0]).Append("order1 ASC"));
            _stageMock
            .Expect(mock => mock.GenerateTextForOrdering(_commandBuilder, ordering2))
            .WhenCalled(mi => ((SqlCommandBuilder)mi.Arguments[0]).Append("order2 DESC"));
            _stageMock.Replay();

            SqlGeneratingExpressionVisitor.GenerateSql(sqlRowNumberRÉxpression, _commandBuilder, _stageMock);

            _stageMock.VerifyAllExpectations();
            Assert.That(_commandBuilder.GetCommandText(), Is.EqualTo("ROW_NUMBER() OVER (ORDER BY order1 ASC, order2 DESC)"));
        }
Пример #2
0
        public virtual Expression VisitSqlRowNumberExpression(SqlRowNumberExpression expression)
        {
            ArgumentUtility.CheckNotNull("expression", expression);

            _commandBuilder.Append("ROW_NUMBER() OVER (ORDER BY ");
            _commandBuilder.AppendSeparated(", ", expression.Orderings, _stage.GenerateTextForOrdering);
            _commandBuilder.Append(")");

            return(expression);
        }
 public void SetUp()
 {
     _orderingExpression1    = Expression.Constant("order1");
     _orderingExpression2    = Expression.Constant("order2");
     _sqlRowNumberExpression =
         new SqlRowNumberExpression(
             new[]
     {
         new Ordering(_orderingExpression1, OrderingDirection.Asc),
         new Ordering(_orderingExpression2, OrderingDirection.Desc)
     });
 }
 public Expression VisitSqlRowNumber(SqlRowNumberExpression expression)
 {
     return(VisitChildrenWithGivenSemantics(expression, SqlExpressionContext.SingleValueRequired));
 }