我有一个Staff和e SecuredPage实体,属性在
之下ID 名称 姓 等级// SecuredPage.RoleId
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指南,阅读了有关集合映射的所有内容,但我无法弄明白。
由于
答案 0 :(得分:1)
我认为问题在于它不是真的一对一。实际上,这是多对多关系的表达。
我知道这听起来并不像你想听到的那样(正如你所说的那样,你没有创建一个角色实体),但你可能想要考虑这样做。
是否有一个“角色”表作为您呈现的这两个表之间的交叉引用?
如果没有,你应该制作一个,这将有助于解决问题。如果是这样,您可能希望将员工和角色之间的关系视为直接关系,将员工和SecuredPages视为间接关系(通过角色,即它)。
编辑:你能告诉我们为什么你没有创建“角色”实体吗?这可能有助于我们澄清。