Suppose you have an entity similar to this:

    public class Mailinglist
    {
        public virtual Guid Id { get; set; }
        public virtual ICollection<Subscriber> Subscribers { get;
set; }
    }

The NHibernate mapping for the entity is as you would expect: `Id` is
the identifier and `Subscribers` is mapped with `<set>` and `<many-to-
many>` referincing a `Subscriber` entity.

Now, I am in a situation where I have an instance of `Mailinglist` and
need to obtain a list of the first 100 subscribers matching some
filter on `Subscriber` properties. Due to performance constraints, and
the amount of data in the database,
`myMailinglist.Subscribers.Where().Take()` is not an option. Hence, I
am trying to put together a query for NHibernate which will fetch just
the 100 `Subscriber` instances from the database.

My initial attempt (without any filtering) goes like this:

    var subscribers = session
        .QueryOver<Mailinglist>()
        .Where(m => m.Id == myMailinglistId)
        .JoinQueryOver(m => m.Subscribers)
        .Take(100)
        .List();

This is obviously not right, as the list I get back contains 100
references to the `Mailinglist` which I already new about. The
generated SQL looks pretty good though, leaving me to think that I
just need to explicitly add a projection/transformation.

I've been trying to find some relevant documentation to help me along,
but cannot seem to find anything addressing this sort of querying. Can
somebody hint me along?

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