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大神。
同樣從以下兩個方面介紹:
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大神。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.