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

Nhibernate:将多对多关系映射为一对一,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有两个项目A和B,它们是单向的一对一关系。(A有一个B) 在数据库中,它们由ATable和BTable表示,并由ABTable链接在一起。(从数据库设置来看,似乎存在多对多关系,但事实并非如此,出于规范化原因,采用这种方式进行了操作) 问题是由于这种设置,我只能让NHibernate将其映射为实体之间的多对多关系。是否有办法使实体具有一对一的关系 我能想到的最好办法是让它有一个多对多关系,然后在a实体上有两个属性,一个返回一个B列表,满足映射,另一个非映射属性从列表中获取第一个B,以满足我的应

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

在数据库中,它们由ATable和BTable表示,并由ABTable链接在一起。(从数据库设置来看,似乎存在多对多关系,但事实并非如此,出于规范化原因,采用这种方式进行了操作)

问题是由于这种设置,我只能让NHibernate将其映射为实体之间的多对多关系。是否有办法使实体具有一对一的关系


我能想到的最好办法是让它有一个多对多关系,然后在a实体上有两个属性,一个返回一个B列表,满足映射,另一个非映射属性从列表中获取第一个B,以满足我的应用程序。-但这似乎不可行。

您可以尝试以各种方式将
联接表
一对一
映射结合起来。
联接表
映射允许在多个具有一对一关系的表中持久化单个类。

您确定是指一对一吗?我已经有很多人要求一对一的时候,他们


无论如何,除了改变你的模式,最简单的事情就是你的建议;但是,为了使它更干净一些,可以将集合设置为私有的,以便只公开获取第一项的两个属性。您可以在上看到用于映射私有属性的Fluent NHibernate。

是的,非常确定它的一对一A有一个B,每个B只能与一个A关联。很好地调用了私有集合,我不知道映射的属性可以是私有的。