Nhibernate外键到外键集合映射?

时间:2009-01-05 20:24:43

标签: .net nhibernate nhibernate-mapping

我有一个Staff和e SecuredPage实体,属性在

之下

员工

ID 名称 姓 等级// SecuredPage.RoleId

SecuredPage

ID 的PageId RoleId // Staff.Level

我希望在Staff实体中有一个SecuredPage集合,所以它是一对多但我无法弄清楚如何在映射中处理它。

Staff.hbm.xml

<bag name="SecuredPages"  lazy="true" inverse="false" cascade="none">
      <key column="RoleId" />
      <many-to-many class="RealEstate.Core.Domain.SecuredPage,RealEstate.Core" />
</bag>

使用上面的代码Nhibernate从SecuredPage表中获取所有记录

SecuredPage.RoleId = Staff.id

但我希望它是

SecurePage.RoleId = Staff.StaffLevel

由于某些原因我没有创建角色实体,这就是我直接尝试根据其级别(角色)获取员工安全页面的原因

我希望我可以告诉你我的问题。我查看了Nhibernate指南,阅读了有关集合映射的所有内容,但我无法弄明白。

由于

1 个答案:

答案 0 :(得分:1)

我认为问题在于它不是真的一对一。实际上,这是多对多关系的表达。

我知道这听起来并不像你想听到的那样(正如你所说的那样,你没有创建一个角色实体),但你可能想要考虑这样做。

是否有一个“角色”表作为您呈现的这两个表之间的交叉引用?

如果没有,你应该制作一个,这将有助于解决问题。如果是这样,您可能希望将员工和角色之间的关系视为直接关系,将员工和SecuredPages视为间接关系(通过角色,即它)。

编辑:你能告诉我们为什么你没有创建“角色”实体吗?这可能有助于我们澄清。