2009-08-09 82 views
2

NHibernate允許我查詢一個數據庫並獲得一個IList對象作爲回報。假設我得到了幾十個對象的列表並修改了大約6個對象。 NHibernate是否有一種方法來保存對集合的更改,還是我必須在更改它時保留每個對象?堅持頂級集合?

下面是一個例子。假設我運行以下代碼:

var hql = "from Project"; 
var query = session.CreateQuery(hql); 
var myProjectList = query.List<Project>(); 

我將找回包含所有項目的IList。現在假設我執行下面的代碼:

var myNewProject = new Project("My New Project"); 
myProjectList .Add(myNewProject); 

而且讓我們說我這樣做了好幾次,增加了幾個新的項目列表。現在我準備好繼續對集合進行更改。

我想通過將myProjectList傳遞給當前的ISession進行更新來堅持更改。但 ISession.SaveOrUpdate()似乎只接受單個對象,而不是像myProjectList這樣的集合。有沒有辦法讓我可以堅持更改myProjectList,或者我必須堅持每個新的對象,因爲我創建它?謝謝你的幫助。

大衛Veeneman
遠見系統

回答

1

如果加載喜歡在你的榜樣對象 - 然後是你必須堅持逐一。但是,如果您進行小的設計更改並加載如下內容:具有IList<Project>的帳戶 - 如果您在映射中指定級聯「what_cascade_you_need」,那麼當您在Account上更改項目時,只需保存帳戶和一切都會得到保存。