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