带有额外列的多对多nhibernate

所以我有两个表UsersGroups 。 这些表(在数据库中)与UGlink链接表一起使用。 现在除了主外键之外,链接表还有一个额外的列: Date

根据我的理解,这意味着我必须有两个多对一,链接“在中间”。

但是,因为我几乎从不对额外的列值感兴趣,所以无论如何都要避免链接? 那是我希望能写的:

 thisUser.Groups 

获取组,而不是:

 thisUser.UGlinks.Group 

在此处输入图像描述

many-to-many ,没有配对表作为实体的显式映射 – 当然是在NHibernate支持。 因此,如果Date列是自动生成的,或者可以为空(不必由app / NHiberante插入) ,我们可以这样做: 6.8。 双向关联

   ...        ...       

那么,我们所拥有的是一个映射,其中NHiberante确实关心配对表,我们可以这样做:

 thisUser.Groups 

但如果我可以建议,不要与many-to-many一起去。 与配对对象的多对一是(我会说)更好的解决方案,因为它将支持按组搜索用户,反之亦然。

参见第24章最佳实践 ,引用:

不要使用异国情调的关联映射。

真正的多对多关联的良好用途很少见。 大多数情况下,您需要存储在“链接表”中的其他信息。 在这种情况下,使用两个一对多关联到中间链接类要好得多。 事实上,我们认为大多数关联是一对多和多对一,在使用任何其他关联风格时应该小心,并问自己是否真的是必要的。

这里有一些更详细的解释如何在没有多对多的情况下做到这一点: Nhibernate:如何用一对多关系表示多对多关系?