hi guys,

i've got strange problem that i'm hoping is just down to my
inexperience with NH...

i asked this question on stackoverflow:
http://stackoverflow.com/questions/1244995/partially-populate-child-collection-with-nhibernate
and learnt that it is by design that NH lazy loads the entire child
collection when you itterate over it, regardless of a supplied
restriction (in this case i only want child objects with a certain
date).

so the recomendation was to just load the parent object, then
separately query for the filtered children i wanted, then associate
them.

so i've tried that, and it looks to be a winner, except, what ever i
do, NH keeps hitting the Db and fully populating the child collection,
even though its lazy loaded, and i'm not iterating over it.

very annoying.

what i want to do is something like the following:

        var post = session.CreateCriteria<BlogPost>()
            .Add(Restrictions.Eq("Id", 1))
            .UniqueResult<BlogPost>();

        var comments = session.CreateCriteria<Comment>()
            .Add(Restrictions.Eq("BlogPostId", 1))
            .Add(Restrictions.Eq("DatePosted", new DateTime(2009, 8,
1)))
            .List<Comment>();

        post.Comments = comments;

but running this bit of code with Sql Profilier running shows that 3
queries get sent to the database, the first one is to get the single
post (good) when the fist statement gets executed, and when the second
statement gets executed, we get two queries sent to the Db, the first
of these is to get the filtered list of comments (good!), but then
another is sent to get the entire list of comments (bad!).

the example i've got here is not the domain my project is in. in the
real domain the child collection is MASSIVE, and would never be
queried without a filter on the date, so i REALLY dont want the whole
lot coming back!

has anyone got any ideas?

cheers,
chris.

--~--~---------~--~----~------------~-------~--~----~
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