Вы можете делать произвольные объединения, используя Theta объединения . Тета-соединение - это декартово произведение, поэтому оно приводит ко всем возможным комбинациям, которые затем можно отфильтровать.
В NHibernate вы можете выполнить соединение в тета-стиле следующим образом (HQL):
from Book b, Review r where b.Isbn = r.Isbn
Затем вы можете добавить любые условия фильтрации, упорядочить результаты и все остальное, что вы можете захотеть сделать.
from Book b, Review r where b.Isbn = r.Isbn where b.Title = 'My Title' or r.Name = 'John Doe' order by b.Author asc
Вот статья о тета-соединениях в Hibernate (не NHibernate, но это все еще актуально).
Однако, поскольку тэта-соединение является декартовым продуктом, вы можете подумать дважды и провести некоторое тестирование производительности, прежде чем использовать этот подход для выполнения запроса с тремя соединениями.