这个问题是接近但不一样的一个位置: 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