Nhibernate 如何从间接链接到表的表映射类中的包/列表/集合

Nhibernate 如何从间接链接到表的表映射类中的包/列表/集合,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我知道这个标题听起来可能有点奇怪,但我附加了一个数据库设计的屏幕。我有两个主表,它们之间有多对多关系。但是我们使用多对多表中的主键引用另一个名为ResourceAllCoAction表的表,并使用外键(ProjectResourceID) 现在,在资源实体中获得一包ResourceAllocation的最佳方法是什么?在nhibernate有没有直接的方法 目前,我的nhibernate映射有一个到ProjectResource表的一对多包,然后它引用ResourceAllocation表,我觉

我知道这个标题听起来可能有点奇怪,但我附加了一个数据库设计的屏幕。我有两个主表,它们之间有多对多关系。但是我们使用多对多表中的主键引用另一个名为ResourceAllCoAction表的表,并使用外键(ProjectResourceID)

现在,在资源实体中获得一包ResourceAllocation的最佳方法是什么?在nhibernate有没有直接的方法

目前,我的nhibernate映射有一个到ProjectResource表的一对多包,然后它引用ResourceAllocation表,我觉得这可能不是最好的方法

请原谅我的无知。任何想法都很感激。

@kalki,当我实现您的映射时,我认为生成的sql查询是

SELECT 
* 
FROM PROJECTRESOURCE P 
LEFT OUTER JOIN RESOURCEALLOCATION  R 
ON P.PROJECTRESOURCEID=R.ID WHERE P.RESOURCEID=1
但这不起作用,因为ProjectResource没有PROJECTRESOURCEID列

如果生成的查询是

SELECT * 
FROM PROJECTRESOURCE P 
LEFT OUTER JOIN RESOURCEALLOCATION R 
ON P.ID = R.PROJECTRESOURCEID
WHERE P.RESOURCEID=1

它会起作用。

您可以使用NHibernate中的多对多和IdBag将其映射

因为ProjectResource可以有一个或多个分配,您可以在ResourceAllocation中有一个Projectd外键,然后您可以将其映射到Project,反之亦然。我本来可以这样做的,但我想知道如果没有资源分配表中的项目/资源的额外参考,是否有一个选项可以这样做。不确定我昨天在想什么!超级大脑冻结!只有在联接表中存在外键时,才能使用多对多。。。ProjectResource有一个或多个ResourceAllocation这是我可以预见资源/项目有一个ResourceAllocation集合的唯一方法如果有foreinkey引用Hanks,我可能会重新设计ResourceAllocation表,并添加项目和资源表的引用,以建立一对多的关系,可以吗用nhibernate映射来详细说明这一点。我了解需要项目和资源表的多对多部分,但如何获得基于资源的资源分配集合?