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 <[email protected]> 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 <[email protected]>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 [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<nhusers%[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.
