我有以下表格:
基本上,用户是项目的一部分,并且对该特定项目具有某些访问权限。
我创建了以下实体:
如何使用NHibernate映射用户实体,以便我可以轻松获取每个项目的访问权限?
我正在考虑做以下事情:
在用户实体中创建“多对多”设置:
public virtual ICollection<ProjectRight> ProjectRights { get; set; }
在用户映射中:
<set name="ProjectRights" table="Users_Projects_Rights"> <key column="id_UserGroup"></key> <many-to-many class="ProjectRight" > <column name="id_Project" /> <column name="id_AccessRight" /> </many-to-many> </set>
这会有用吗?如果是,这是否意味着我需要创建两个额外的实体,以便我可以映射Projects和AccessRights表。?
由于
答案 0 :(得分:1)
我建议将ProjectRight
创建为组件而不是实体:
<set name="ProjectRights" table="Users_Projects_Rights">
<key column="id_User"/>
<composite-element class="ProjectRight">
<many-to-one name="Project" column="id_Project"/>
<many-to-one name="Right" column="id_AccessRight"/>
</composite-element>
</set>
这是NHibernate文档建议的两种方法之一。对于另一个,请参阅here。