Этот вопрос близок, но не совпадает с приведенным здесь: NHibernate Query для нескольких таблиц
По сути, мой вопрос задается по следующей модели, как мне запросить, чтобы найтиout, если текущая собака имеет имя «foo» или прошедшая собака имеет имя «foo» (дизъюнкция). По сути, у меня есть отношение «многие к одному» для CurrentDog и отношение «многие ко многим» для PastDogs.
public class Dog {
public string name {get; set;}
}
public class Owner {
public string firstname {get; set;}
public string lastname {get; set;}
public Dog CurrentDog {get; set;}
public Dog[] PastDogs {get; set;}
}
Я думаю, что SQL должен выглядеть примерно так:
SELECT o.* FROM owners AS o
INNER JOIN dogs AS cd ON o.current_dog_id = cd.id
INNER JOIN owner_past_dog_maps AS pd ON o.id = pd.owner_id
INNER JOIN dogs AS d ON pd.dog_id = d.id
WHERE d.name = 'foo'
OR cd.name = 'foo'
Надеюсь, что это имеет смысл ... Я постараюсь уточнить, если кто-нибудь спросит.