我正在努力探索将nHibernate映射到现有数据库的最佳方法。以下是基本表格:
用户表: 用户身份 FIELD1 域2 ...
许可表: PermissionID FIELD1 域2 ...
UserPermissions: 用户身份 PermissionID
我将类映射(使用XML)并为User和Permission表运行,但现在想要使用两列映射表在这两个类中创建集。
也就是说,Permission类将有一个ICollection<User>
,而User Class就是一个ICollection<Permission>
成员。
我不认为我应该将UserPermission表映射到实体,因为它不是真正的实体。它只是一个映射表。
不幸的是,尽管所有的nHibernate文档和搜索都没有引导我明确这样做。任何帮助将不胜感激。
答案 0 :(得分:0)
NHibernate支持这种数据库设计。在这种情况下的映射将使用many-to-many
元素 - 没有配对实体/表的任何显式映射。
以下是来自文档的调整后的摘录:6.8. Bidirectional Associations
<class name="User">
<id name="Id" column="UserID"/>
...
<bag name="Permissions" table="UserPermissions" lazy="true">
<key column="UserID"/>
<many-to-many class="Permission" column="PermissionID"/>
</bag>
</class>
<class name="Permission">
<id name="Id" column="PermissionID"/>
...
<!-- inverse end -->
<bag name="Users" table="UserPermissions" inverse="true" lazy="true">
<key column="PermissionID"/>
<many-to-many class="User" column="UserID"/>
</bag>
</class>