2

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

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

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

我能想到的最好的方法是让它具有多对多关系,然后在 A 实体上有两个属性,一个返回 B 的列表,这将满足映射和第二个非映射属性,它将获得列表中的第一个 B,以满足我的应用程序。- 但这似乎不优雅。

4

2 回答 2

1

你确定你的意思是一对一?当他们真正的意思是多对一时,我有很多人要求一对一。

无论如何,除了更改您的架构之外,最简单的事情就是您的建议;但是,为了使其更简洁,您可以将集合设为私有,这样您只公开获取第一项的两个属性。您可以在wiki上查看Fluent NHibernate 中用于映射私有属性的各种方法

于 2009-03-03T21:02:31.303 回答
0

您可以尝试以各种方式组合join-tablewithone-to-one映射。映射join-table允许单个类在具有一对一关系的多个表中持久化。

于 2009-03-03T17:21:38.480 回答