Example #1
0
 protected override void VisitSource(IFragmentBuilder parent, IQueryGraphBuilder graph, ISourceBuilder expression)
 {
     new EnsureRowNumber(this.Database).Visit(parent, graph, expression);
     base.VisitSource(parent, graph, expression);
 }
 protected override void VisitSource(IFragmentBuilder parent, IQueryGraphBuilder graph, ISourceBuilder expression)
 {
     this.Push(new SqlServerFromWriter(parent, graph, this.Database, this, this.Parameters));
     this.Peek.Write(expression);
     this.Pop();
 }
Example #3
0
 protected override void VisitSource(IFragmentBuilder parent, IQueryGraphBuilder graph, ISourceBuilder expression)
 {
     //Nothing to do.
 }
Example #4
0
        protected override void VisitSource(IFragmentBuilder parent, IQueryGraphBuilder graph, ISourceBuilder expression)
        {
            var filter = graph.Fragment <IFilterBuilder>();

            if (!filter.Offset.HasValue)
            {
                return;
            }
            var table = expression.Tables.FirstOrDefault();

            graph.Source.Expressions.Clear();
            graph.Source.AddSubQuery(
                this.Database.QueryFactory.Build().With(subquery =>
            {
                subquery.Output.AddOperator(QueryOperator.Star);
                subquery.Output.AddWindowFunction(
                    SqlServerWindowFunction.RowNumber,
                    subquery.Output.CreateSubQuery(
                        this.Database.QueryFactory.Build().With(
                            over => over.Sort.AddColumns(table.Table.PrimaryKeys)
                            )
                        )
                    ).Alias = string.Format(
                    "{0}_RowNumber",
                    filter.Id
                    );
                subquery.Source.AddTable(table.Table);
            })
                ).Alias = table.Table.TableName;
        }
Example #5
0
 protected abstract void VisitSource(IFragmentBuilder parent, IQueryGraphBuilder graph, ISourceBuilder expression);