我有两个实体,由数据库中的两个表表示,由一个链接表连接,每个外键都有一个唯一约束。 (有关详细信息,请参阅此question)。链接表允许多对多关系,但唯一约束确保在实践中只有一对一的关系。
这个问题的一个很好的比喻是汽车和停车库空间。有很多车和很多空间。一个空间可以包含一辆车或是空的;一辆车一次只能在一个空间内,或者没有空间(不能停放)。
我们有一个Cars表和一个Spaces表以及名为Parking的链接表。这是链接表:
create table parking (
car_id references car,
space_id references space,
unique car_id,
unique space_id
);
有没有办法在NHibernate中映射这种关系,这样每个实体都拥有一个表示相关实体的属性,而不是一个集合?
答案 0 :(得分:0)
有可能像这样
class Car
{
public Space Space { get; set; }
}
public CarMap()
{
Join("parking", join =>
{
join.KeyColumn("car_id");
join.References(car => car.Space, "space_id");
});
}
in hbm:
<class name="car">
<join table="parking">
<many-to-one name="Space" column="space_id"/>
</join>
</class>