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.