Nobody knows which is the real target of the query... well... nobody...
perhaps the user knows.
Wherever you put the Count() I can't understand the sense.

On Thu, Jul 22, 2010 at 3:20 PM, Frans Bouma <[email protected]> wrote:

> > I'm trying to perform this query on NHibernate 2.1.2 with NHibernate.Linq
> > (1.1.0.1001)
> >
> > session.Linq<FieldStructure>().Skip(10).Take(10).Count()
> >
> > This generates the following SQL
> >
> > "NHibernate: SELECT TOP 10 y0_ FROM (SELECT count(*) as y0_,
> > ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row
> FROM
> > FieldStructure this_) as query WHERE query.__hibernate_sort_row >
> > 10 ORDER BY query.__hibernate_sort_row"
> >
> > This query always returns 0 rows, I know I should be getting 10 rows.
> >
> > If I perform the same query without the Count(), I will get 10 rows.
> > The SQL generated is...
> >
> > "NHibernate: SELECT TOP 10 <list of fields>, ROW_NUMBER() OVER(ORDER BY
> > CURRENT_TIMESTAMP) as __hibernate_sort_row FROM FieldStructure this_ left
> > outer join Lookup lookup2_ on
> > this_.LookupId=lookup2_.LookupId) as query WHERE
> query.__hibernate_sort_row
> > > 10 ORDER BY query.__hibernate_sort_row"
> >
> > Is this a bug?
>
>         Looks like it. The link provider apparently sees the aggregate
> expression as the outer query, but that shouldn't be done that way: the
> skip
> and take expressions are consumed by an expression visitor but the values
> they get as parameters should be applied to the query / sequence they work
> on, and _that_ sequence is then the source of the aggregate expression,
> which always works on a separate scope, so it could never be wrapped by a
> take.
>
>                FB
>
>
>
>


-- 
Fabio Maulo

Reply via email to