Скажем, у меня есть два класса: Parent
и Child
.Parent
имеет свойство Children
, которое, конечно же, является коллекцией Child
объектов.
Child
не имеет свойства ParentId
.У него есть свойство Parent
.
Итак, мое отображение NHibernate для Child
включает в себя:
<many-to-one name="Parent" class="Parent" column="ParentId" cascade="save-update" />
И мое отображение Parent
включает:
<bag name="children" access="field" inverse="true" cascade="all-delete-orphan">
<key column="ParentId" />
<one-to-many class="Child" />
</bag>
Теперь вот что я хочу сделать: я хочу получить все Child
объекты с определенным ParentId
.Я знаю, что могу сначала получить Parent
, а затем вернуть его Children
свойство.Но что если я захочу запросить таблицу Child
напрямую?
Если это будет сопоставленное свойство (например, Name
), я мог бы использовать критерии NHibernate, но в этом случае ParentId
не отображается.
Я пытался использовать что-то вроде:
criteria.Add(Restrictions.Eq("Parent.Id", 1));
Но это не работает.Я прибег к использованию SQLCriterion (как объяснено здесь ), но друг / коллега заставил меня подумать, что должен быть лучший способ.
Есть идеи?Что-то с проекциями и Restrictions.EqProperty
?