在nhibernate中映射外键集合

时间:2009-09-04 21:51:56

标签: asp.net nhibernate nhibernate-mapping

我有这样的表:

tblUsers
int UserID
string UserName


tblUsersInRoles
int UserID
int RoleID

tbleRoles
int RoleID
string RoleName

用户可以担任多个角色。

有没有办法为我的用户创建我的映射文件,以便我的用户对象包含一个角色列表?我已经想到这样做,以便我有一个RoleID列表:

<bag name="Roles" table="tblUsersInRoles" cascade="all">
  <key column="UserId"/>
  <one-to-many class="UsersInRoles"/>
</bag>

有没有办法通过映射文件采取下一步并存储角色本身而不仅仅是他们的ID?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

你不需要UsersInRoles,你可以使用这个映射:

<bag name="Roles" table="tblUsersInRoles" cascade="none"> 
  <key column="UserId"></key> 
  <many-to-many class="Role" column="RoleId"></many-to-many> 
</bag> 

你可以阅读this post关于多对多的内容。关于级联 - 如果你将cascade设置为all,那么删除用户将删除他的角色 - 我认为你不需要它。