nhibernate入門系列 值集合對映

2021-09-05 15:49:15 字數 708 閱讀 6573

在資料庫的多對多關係中, 實現方法是通過乙個額外的關聯表將兩個主表關聯起來,關聯表中只儲存兩個主表的主健,顯然, 主表與關聯表是一對多的關係. 這樣兩個主表就通過這個關聯表構成了乙個多對多的關係.

典型的例子就是使用者和許可權了, 每個使用者可以有多個許可權, 而每個許可權也可以分配給多個使用者. 通過乙個使用者許可權表就可以實現這樣的要求.

因為關聯表並沒有其它任何資訊, 所以在nh中它不能算是乙個持久物件, 沒必要像處理one-to-many的情況那樣.在nh中, 通過值集合對映來處理這種情況.

下面以使用者/許可權為例再看看實際的處理情況.

測試**

[test]

public void testuserpermission()

以上測試**中session的相關操作請檢視相關文件。

在這裡給user類定義了兩個操作許可權的方法: addpermission和removepermission.

類定義

在set定義中, 指定值集合的名稱,以及關聯表的名稱, 再指定key值, 也即在關聯表的健, 一般是主健.

element元素指定產生值集合的列和型別.

值集合的開銷遠小於物件集合的開銷, 在有些時候, 可以考慮將one-to-many簡化為集集合, 這樣我們只取得many的id值, 在需要訪問many物件時再載入, 這也算是延遲載入的乙個變相實現吧.

NHibernate 系列研究 二

為了進一步研究nhibernate,決定分析其源 如有感興趣者,歡迎一起研究,本節研究nhibernate配置和持久物件對映檔案。nhibernate配置 有三種方式來存放nhibernate的配置 1,作為單獨的一節放在相應程式的配置檔案中,對於執行檔案或類庫為檔名稱後加.config,對於asp...

nhibernate入門的幫助

nhibernate的入門本來是比較容易的,但是我發現沒有想象那麼容易,在看了好多篇入門文章,嘗試了好多的例子後,今天終於測試成功了。寫下這個希望能對後來的朋友有幫助,減少一些挫折感。開源軟體的文件是相對弱項。環境 vs2005 sql server 2005,nhibernate1.2 最後是參考...

Nhibernate 儲存過程獲取返回值

1 region executestoredprocforquery 2public void excutestoreprocforreturn string spname,ilistparam,out object result 319 cmd.parameters.add parameter 2...