NHibernate多對多單雙向關聯映射-NHibernate入門到精通系列10

本節爲你您介紹:NHibernate多對多關聯映射

同樣從以下兩個方面介紹:

1:單向多對多映射

2:雙向多對多映射

國產優化數據框架推薦:CYQ.Data 數據框架


以下爲正文介紹:

一、NHibernate單向多對多關聯映射

不多說,上圖:

 
從上圖中,我們發現,用戶(User)多個對應多個角色(Role)。成就了“多對多”的關聯關係。

再通過用戶(User)表和角色(Role)表,和用戶角色表,三張表的關係構造“多對多”的關聯關係。

同樣上三者的Xml映射文件:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain">
  <class name="Role" table="T_Role" lazy="true" >
    <id name="ID" type="int" column="RoleID">
      <generator class="native"/>
    </id>

    <property name="Name" type="string">
      <column name="Name" length="51"/>
    </property>

  </class>
</hibernate-mapping>


<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain">
  <class name="User" table="T_User" lazy="true" >
    <id name="ID" type="int" column="UserID">
      <generator class="native"/>
    </id>
 
    <property name="Name" type="string">
      <column name="Name" length="51"/>
    </property>

    <bag name="Roles" table="T_User_Role">
      <key column="UserID"/>
      <many-to-many class="Role" column="RoleID"/>
    </bag>
   
  </class>
</hibernate-mapping>

說明:

與上節描述同樣:使用IList<Role>屬性Roles,用<bag>和<many-to-many>標籤描述“多對多”關聯映射。

而<bag>標籤中的table屬性是設置“多對多”映射的第三方的關係表。

提醒大夥的是T_User_Role這個第三方關係表不在持久化類的結構中體現。

而<key>標籤的“column”屬性用於指定主鍵表的主鍵,<many-to- many>標籤的“column”屬性用於指定外鍵表的關聯字段。

二、NHibernate雙向多對多關聯映射

直接上Xml的配置文件:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain">
  <class name="Role" table="T_Role" lazy="true" >
    <id name="ID" type="int" column="RoleID">
      <generator class="native"/>
    </id>

    <property name="Name" type="string">
      <column name="Name" length="51"/>
    </property>

    <bag name="Users" table="T_User_Role">
      <key column="RoleID"/>
      <many-to-many class="User" column="UserID"/>
    </bag>

  </class>
</hibernate-mapping>

在Role角色類中建立User用戶的IList<User>屬性“Users”。

通過這樣的配置,多個Role角色對應多個User用戶,多個User用戶也對應多個Role角色。

本節NHibernate多對多單雙向關聯映射,即介紹到此了,謝謝欣賞。

如若想尋更多相關資料,可尋百度google大神。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章