天天看點

Nhibernate中One—to—One關系映射詳解

最近對NHibernate的中持久化對象間關系初次涉及,發現第一次并不是很好了解其中關系配置設定,心裡總是認為NHibernate架構關系配置設定不是很合理,但今天下午還就是拿了一個下午時間來研究One-to-One關系映射,相對其他one-to-many/many-to-one/many-to-mang關系而言,稍微簡單了解一些,我發現這個One-to-one實質其實就是一個特殊的one-to-many關系映射,NHibernate中加以細分.不加以廢話,切入正題.

持久化對象之間一對一的關聯關系是通過 one-to-one元素定義的.在對持久化對象配置檔案一個節點,為了友善了解後面的one-to-one中配置對該節點中涉及到屬性加以羅列:

--one-to-one總體結構

Nhibernate中One—to—One關系映射詳解

<one-to-one

Nhibernate中One—to—One關系映射詳解

        name="PropertyName"                                (1)

Nhibernate中One—to—One關系映射詳解

        class="ClassName"                                  (2)

Nhibernate中One—to—One關系映射詳解

        cascade="all|none|save-update|delete"              (3)

Nhibernate中One—to—One關系映射詳解

        constrained="true|false"                           (4)

Nhibernate中One—to—One關系映射詳解

        fetch="join|select"                                (5)

Nhibernate中One—to—One關系映射詳解

        property-ref="PropertyNameFromAssociatedClass"     (6)

Nhibernate中One—to—One關系映射詳解

        access="field|property|nosetter|ClassName"         (7)

Nhibernate中One—to—One關系映射詳解

/>

Nhibernate中One—to—One關系映射詳解

--各個屬性定義:

Nhibernate中One—to—One關系映射詳解

(1)name:屬性名-必選屬性

Nhibernate中One—to—One關系映射詳解

(2)Class:呗關聯的類的名稱(可選-預設是通過反射得到的屬性類型)

Nhibernate中One—to—One關系映射詳解

(3)  cascade(級聯) (可選) 表明操作是否從父對象級聯到被關聯的對象

Nhibernate中One—to—One關系映射詳解

(4)constrained(限制)表名該類對應的表對應的資料庫資料庫表,和被關聯的對象所對應的資料庫表之間,通過一個外鍵引用對主鍵進行限制。 這個選項影響Save()和Delete()在級聯執行時的先後順序以及 決定該關聯能否被委托(也在schema export tool中被使用). 

Nhibernate中One—to—One關系映射詳解
Nhibernate中One—to—One關系映射詳解

(5)  fetch (可選 - 預設設定為select): 在外連接配接抓取或者序列選擇抓取選擇其一. 

Nhibernate中One—to—One關系映射詳解

(6)  property-ref: (可選) 指定關聯類的屬性名,這個屬性将會和本類的主鍵相對應。如果沒有指定,會使用對方關聯類的主鍵。 

Nhibernate中One—to—One關系映射詳解
Nhibernate中One—to—One關系映射詳解

(7)  access (可選 - 預設是 property): NHibernate用來通路屬性的政策

在園子裡看到一個大牛寫的很不錯,總結的恰到好處,簡潔而切合實際應用,我就不加以啰嗦,收藏做日後備份

本文轉自chenkaiunion 51CTO部落格,原文連結:http://blog.51cto.com/chenkai/765441