2014-03-25 122 views
1

我正在努力將自己的頭圍繞着將nHibernate映射到現有數據庫的最佳方式。下面是基本表:nHibernate HMB映射關鍵表

用戶表: 用戶ID字段1 FIELD2 ...

權限表: PermissionID 字段1 場2 ...

UserPermissions: 用戶名 PermissionID

我有類映射(使用XML)和爲User和Permission表起作用,但現在想要使用兩個列映射表在這兩個類中創建集合。

也就是說,許可類將有一個ICollection<User>和用戶類ICollection<Permission>成員。

我不認爲我應該將UserPermission表映射到一個實體,因爲它不是一個真正的實體。它只是一個映射表。

不幸的是,雖然所有的nHibernate文檔和搜索都沒有讓我明確這樣做。任何幫助,將不勝感激。

回答

0

NHibernate支持這種DB設計。這種情況下的映射將使用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> 
+0

感謝絕對快速反應。我錯誤地認爲袋子指令需要一個班級。再次感謝,這工作完美。 –

+0

很高興看到,享受NHibernate ...令人驚歎的工具;) –