這個問題是接近但不一樣的一個位置: NHibernate Query across multiple tablesNHibernate的析取(「OR」)查詢在許多-to-one和許多一對多關係
基本上,我的問題是給定的以下模型中,我將如何查詢以查明當前狗是否具有名稱「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'
希望是有道理的......我試試,如果有人問澄清。
我想我可以把它放在一個新的帖子中,但這個問題的擴展將是如何返回一個擁有者曾經擁有,過去或現在的所有狗? – longda