I've try the second query suggestions , like this:
       IList<OrderCustomerSummary> _list =
                mSession.QueryOver<Order>()
                    .SelectList
                    (
                    pList => pList
                        .SelectGroup(pO => pO.Customer).WithAlias(()=>
_customerSummary.Client )
                        .SelectSum(pO => pO.Freight).WithAlias(() =>
_customerSummary.Total)
                        .SelectCount(pO=>pO.Freight).WithAlias(() =>
_customerSummary.Nb)
                    )
                    
.TransformUsing(Transformers.AliasToBean<OrderCustomerSummary>())
                    .List<OrderCustomerSummary>();
            mSession.QueryOver<Customer>()
                .Where(c => c.CustomerId.IsIn(_list.Select(l =>
l.Client.CustomerId).ToList()))
                .List();
but i still get N+1 Select problem
Mmay i've missed something ?
Thanks everybody for  help
Willy

On Apr 16, 3:26 pm, Richard Brown <[email protected]> wrote:
> I tried, but I couldn't get it to eager-load the customer when it's part of
> a group-by either.
>
> The best I could come up with was adding a second query:
>
> s.QueryOver<Customer>()
>     .Where(c => c.Id.IsIn(_list.Select(l => l.Client.Id).ToList()))
>     .List();
>
> ... which reduces it from N+1 to 2.
>
> On 15 April 2012 08:47, Oskar Berggren <[email protected]> wrote:
>
>
>
>
>
>
>
> > Maybe someone knows a better way to express the query. One way to
> > mitigate the effect of the current query would be to define batch-size
> > in the mapping for Customer. This is probably a good idea anyway, and
> > will turn your N+1 into e.g. N+1/20.
>
> > /Oskar
>
> > Den 15 april 2012 07:41 skrev WillyA <[email protected]>:
> > > Hi,
> > > First i'm a beginner with the QueryOver
> > > I have some problems to specifiy eager fetch mode with QueryOver
> > > group.
> > > I have two class (Northwind samples)
> > >  - Customer
> > >  - Order with a many-to-one association with Customer
> > > and  OrderCustomerSummary as DTO
> > >  public class OrderCustomerSummary
> > >    {
> > >        public Customer Client { get; set; }
> > >        public decimal Total { get; set; }
> > >        public Int64 Nb { get; set; }
> > >    }
> > > I want to query Order with Customer group by , with count(..) and
> > > sum(...) and use AliasToBean mechanism to put in an
> > > IList<OrderCustomerSummary> like this.:
> > > ....
> > >        OrderCustomerSummary _customerSummary=null;
> > >            IList<OrderCustomerSummary> _list =
> > >                mSession.QueryOver<Order>()
> > >                    .Fetch(pO => pO.Customer).Eager
> > >                    .SelectList(pList => pList
> > >                                            .SelectGroup(pO =>
> > > pO.Customer).WithAlias(()=> _customerSummary.Client )
> > >                                            .SelectSum(pO =>
> > > pO.Freight).WithAlias(() => _customerSummary.Total)
>
> >  .SelectCount(pO=>pO.Freight).WithAlias(()
> > > => _customerSummary.Nb)
> > >                    )
>
> >  .TransformUsing(Transformers.AliasToBean<OrderCustomerSummary>())
> > >                    .List<OrderCustomerSummary>();
> > > ...
> > > And when I iterate thru the results , i get N+1 Select problem, even i
> > > specify eager fetch for "Customer".
> > > Is there another way to do it to make eager fetch to work ?
> > > Thanks for any help.
> > > Willy
>
> > > --
> > > You received this message because you are subscribed to the Google
> > Groups "nhusers" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > [email protected].
> > > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "nhusers" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to