Excellent, thank you! On Friday, December 5, 2014 2:59:55 PM UTC-6, Gunnar Liljas wrote: > > Session.Query<Registration>() > .Where(r => (theDate < r.Start || today <= r.End)) > .OrderBy(r => r.Start) > .FetchMany(r => r.People) > .ThenFetch(p => p.Location) //optional > .ToList(); > > 2014-12-05 20:48 GMT+01:00 Steve Brown <[email protected] <javascript:>>: > >> I have an entity model along the lines of the following: >> >> public class Registration >> { >> public virtual int Id { get; set; } >> public virtual DateTime Start { get; set; } >> public virtual DateTime End { get; set; } >> public virtual IList<Person> People { get; set; } >> } >> >> public class Person >> { >> public virtual int Id { get; set; } >> public virtual Registration Registration { get; set; } >> public virtual string Name { get; set; } >> public virtual Location Location { get; set; } >> } >> >> public class Location >> { >> public virtual int Id { get; set; } >> public virtual string Description { get; set; } >> } >> >> Currently, the Registration.People collection is lazy loaded, and the >> Person.Location property is fetched with a join when loading a Person >> entity. >> >> I have a view that needs to load all registration entities on a >> particular day. I have created the query easily enough and it returns the >> expected results: >> >> DateTime theDate = DateTime.Today; >> Session.Query<Registration>() >> .Where(r => (theDate < r.Start || today <= r.End)) >> .OrderBy(r => r.Start) >> .ToList(); >> >> However with my existing model, NHibernate issues a query to fetch the >> Registration entities, then* for each Registration found*, issues >> another query to fetch the Person entities. While this certainly works, it >> results in a lot of queries if there are a lot of Registration records on a >> particular day. >> >> I'm wondering if there is a more efficient way to fetch the child >> records? For example, if I were stuck using ADO.NET and building my >> queries by hand, I might query all the Registration records, collect the >> Ids of the returned entities, then issue a single query for Person entities >> with Registration Ids in the collection, then map the Person entities back >> to the appropriate Registration record. I've looked at Futures and eager >> fetching the children, but those produced ugly results (like Cartesian >> result sets, etc.). Can I accomplish something similar with NHibernate? >> >> TIA, >> Steve >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/nhusers. >> For more options, visit https://groups.google.com/d/optout. >> > >
-- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
