关键表的nHibernate HMB映射

时间:2014-03-25 14:05:11

标签: nhibernate nhibernate-mapping

我正在努力探索将nHibernate映射到现有数据库的最佳方法。以下是基本表格:

用户表: 用户身份 FIELD1 域2 ...

许可表: PermissionID FIELD1 域2 ...

UserPermissions: 用户身份 PermissionID

我将类映射(使用XML)并为User和Permission表运行,但现在想要使用两列映射表在这两个类中创建集。

也就是说,Permission类将有一个ICollection<User>,而User Class就是一个ICollection<Permission>成员。

我不认为我应该将UserPermission表映射到实体,因为它不是真正的实体。它只是一个映射表。

不幸的是,尽管所有的nHibernate文档和搜索都没有引导我明确这样做。任何帮助将不胜感激。

1 个答案:

答案 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>