Hi Nadav,
"you can actually just query for the products of all you're
entities," This looks the most appealing, how do I actually do this ?
You mean I shoud call a FetchAll for entities and FetchAll for
products and then the lazy loader for entities will now how to load
entity.Products based on the collection that I fetched previously ?
"by the way, why don't you put your domain business logic inside your
nhibernate mapped entities? "
Yes, why don't I ? It has something to do with my business layer, I
find it very hard to map collections into my business object, I use
CSLA, and there are some issues here specific to my application.
On Sep 7, 5:22 pm, nadav s <
nadav...@gmail.com> wrote:
> hi Calin. The main performance issue with your code isn't lake of use of
> your multi core proccessor, but a classical N+1 problem.
>
> you're enumerating an enumeration of entities, lazy loading their
> collection, now unless you have set a big batch size, if you have 100
> entities, and you are have one one-to-many relationship, you're gonna have
> here 101 queries (thus N+1) - one for the entities (the previous query) and
> 1 query per a returned entity.
>
> you can actually just query for the products of all you're entities, and
> then you'll have only 2 queries, one fetching the entities, and one fetching
> the products.
>
> by the way, why don't you put your domain business logic inside your
> nhibernate mapped entities?
>
> On Tue, Sep 7, 2010 at 4:28 PM, Graham Bunce <
grahambu...@hotmail.com>wrote:
>
>
>
>
>
>
>
> > ... however if you did want to do this then you'd need some framework
> > to manage the sessions for you.
>
> > the best way may be to wrap each Create within a method that manages
> > the session for you e.g. (semi pseudo-code)
>
> > Parallel.ForEach(() => { ServiceLayer.Create(entity); };
>
> > ServiceLayer.Create<T>(T entity)
> > {
> > try
> > {
> > NH.Session.Open();
> > //Do Stuff
> > }
> > finally
> > {
> > NH.Session.Close();
> > }
> > }
>
> > Or something along these lines. Make sure that the entity you pass is
> > either a DTO (safer IMO) or you attach it to the new session within
> > the Create method. There may be some quirks with the latter though.
> > I've done some multi-threaded stuff with NH but not a huge amount so
> > there might be a problem with the above... but I've done something
> > similar myself and, so far, no issues I've come across.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "nhusers" group.
> > To post to this group, send email to
nhu...@googlegroups.com.
> > To unsubscribe from this group, send email to
> >
nhusers+u...@googlegroups.com<
nhusers%2Bunsu...@googlegroups.com >
> > .