2009-03-03 165 views
2

我有两个项目A和B,它们有单向的一对一关系。 (A有一个B)Nhibernate:将多对多关系映射为一对一

在数据库中,这些由ATable和BTable表示,它们由ABTable链接在一起。 (从数据库设置看来,存在多对多的关系,但没有,这是出于规范化的原因这样做的)。

问题是由于这个设置,我只能够得到NHibernate映射这个作为实体之间的多对多关系。无论如何让这些实体有一对一的关系?

我能想到的最好的方法就是让它具有多对多的关系,然后在A实体上有两个属性返回B列表,这将满足映射,第二个非映射财产,将获得列表中的第一个B,以满足我的申请。 - 但这似乎不合格。

回答

0

您可以尝试以各种方式组合join-tableone-to-one映射。 A join-table映射允许将单个类保存在具有一对一关系的多个表中。

1

你确定你的意思是一对一吗?我有这么多人要求一对一的时候really mean many-to-one's

无论如何,改变你的模式,最简单的事情就是你的建议;但是,为了使它更清洁一点,您可以将这些集合设置为私有的,以便仅公开提取第一个项目的两个属性。您可以在Fluent NHibernate中看到various methods以映射wiki上的私有属性。

+0

是的,很确定它的一对一A有一个B,每个B只能与一个A相关联。 好的调用私有集合,我不知道映射的属性可能是私有的。 – Dan 2009-03-03 23:07:13