Я пытаюсь сопоставить троичную ассоциацию с помощью FluentNhibernate.
У меня есть 3 таблицы:
TUser(PK int id, string name, ...)
TGroup(PK int id, string name, ...)
TRole(PK int id, string name, ...)
И четвертый, который связывает их, представляя троичное объединение:
TUserGroupRole(FK int userid, FK int groupid, FK int roleid)
Обычно пользователь играет определенную роль для группы. Я использую 3 типа в моей модели:
В классе User
я хочу использовать IDictionary<UserGroup,UserRole>
для индексации ролей пользователей по группам:
public class User
{
public virtual int Id { get; set; }
public virtual IDictionary<UserGroup, UserRole> Roles { get; set; }
// ...
}
Используя обычный XML-файл отображения в стиле hbm, я добился этого с помощью элемента <map>
, например, так (псевдо-отображение):
<map name="Roles" table="TUserGroupRole">
<key column="userid"/>
<index-many-to-many column="groupid" class="UserGroup"/>
<many-to-many column="roleid" class="UserRole"/>
</map>
Я не смог выяснить, как создать такое же отображение с помощью FluentNhibernate , поэтому любая помощь по этому вопросу будет очень признательна.