We've been using the NHQG for awhile now, and we've had great success with it.
It wasn't until today that I found that the standard mapping using a Matches:
return Where.Interview.Attendees.Matches(Get.PersonSummary.ID, Where.PersonSummary.ID == RraPerson.GetCurrent().ID);
So I have a collection of PersonSummaries, which are mapped using a link table shown by the mapping below:
<idbag name="Attendees" table="InterviewAttendee"> <collection-id type="Int32" column="ID"> <generator class="native"/> </collection-id> <key column="InterviewID" /> <many-to-many class="Namespace.PersonSummary, Assembly" column="PersonID" lazy="false" /> </idbag>
Unfortunately this was not working and throwing an NHibby exception:
threw an exception of type 'NHibernate.QueryException'
base {NHibernate.HibernateException}: {"could not resolve property: Attendees of: Namespace.PersonSummary"
After some struggling I stumbled upon this blog post from Ayende which demonstrates how to perform a query against a many-to-many mapped collection. So my query now looked like:
return Where.Interview.Attendees.With().ID == RraPerson.GetCurrent().ID;
Sweet! The With() method works very nicely and even neatens up the query.
No comments:
Post a Comment