Проблема запроса в иерархию объектов с помощью nHibernate - PullRequest
1 голос
/ 01 апреля 2011

Проблема:

У меня есть иерархия объектов A => B => C - это A ссылки B и B ссылки C. C содержит свойство Name, к которому я пытаюсь выполнить запрос. Я пытаюсь вызвать следующий код, чтобы получить список A's

ICriteria criteria = session.CreateCriteria(typeof (A)).Add(Restrictions.Eq("B.C.Name", "Test"));
return criteria.List<A>();

Я получаю сообщение об ошибке «Не удалось разрешить свойство: B.C.Name of: A». Все мои отображения выглядят хорошо: B содержит свойство C, а C - Name. Я также проверил правильность сопоставлений, потому что я выполняю другие запросы, которые успешно извлекают запрошенные данные.

По сути, я пытаюсь получить все A's, которые соответствуют имени в C. Так как мне написать запрос, который может это сделать?

Спасибо

Кайл

1 Ответ

2 голосов
/ 01 апреля 2011

Использование QueryOver:

session.QueryOver<A>()
    .JoinQueryOver(a => a.B)
    .JoinQueryOver(b => b.C)
    .Where(c => c.Name == "Test")
    .List<A>();

Вы также можете сделать это с псевдонимами.

...