Nhibernate:将多对多的关系映射为一对一的映射

时间:2009-03-03 17:08:29

标签: nhibernate fluent-nhibernate nhibernate-mapping

我有两个项目A和B,它们具有单向一对一的关系。 (A有一个B)

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

问题是由于这个设置,我只能让NHibernate将其映射为实体之间的多对多关系。有没有让实体有一对一的关系?

我能想到的最好的就是让它有多对多的关系,然后在A实体上有两个属性,一个返回B的List,它将满足映射,第二个非映射属性,它将从列表中获取第一个B,以满足我的应用程序。 - 但这似乎并不合适。

2 个答案:

答案 0 :(得分:1)

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

无论如何,如果不改变你的架构,最简单的就是你的建议;但是,为了使它更清洁,您可以将集合设置为私有,因此您只展示了获取第一个项目的两个属性。您可以在Fluent NHibernate中看到various methods,以便在wiki上映射私有属性。

答案 1 :(得分:0)

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