Сопоставление коллекции внешних ключей в nhibernate

#asp.net #nhibernate #nhibernate-mapping

#asp.net #nhibernate #nhibernate-сопоставление

Вопрос:

У меня есть таблицы, подобные этой:

 tblUsers
int UserID
string UserName


tblUsersInRoles
int UserID
int RoleID

tbleRoles
int RoleID
string RoleName
  

Пользователь может выполнять множество ролей.

Есть ли способ создать мой файл сопоставления для моих пользователей, чтобы мой объект users содержал список ролей? Я понял, как это сделать, чтобы у меня был список идентификаторов ролей, подобный этому:

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

Есть ли способ выполнить этот следующий шаг с помощью файла сопоставления и сохранить сами роли, а не только их идентификаторы?

Спасибо за любую помощь

Ответ №1:

Вам не нужны роли пользователей, для этого вы можете использовать это сопоставление:

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

И вы можете прочитать этот пост о многих ко многим. И о каскадировании — если вы установите значение cascade для all, то удаление пользователя приведет к удалению его ролей — я не думаю, что вам это нужно.