2008-09-26 69 views
4

這裏是場景:如何在更新後使用NHibernate從數據庫中檢索最新版本?

我有一個使用NHibernate的winforms應用程序。啓動時,我使用NHibernate查詢的結果填充DataGridView。這部分工作正常。如果我更新該列表中的記錄並刷新會話,則更新將接收數據庫。在更新後關閉表單時,我調用一個方法來檢索對象列表,以再次填充DataGridView以獲取更改並獲取其他人可能發生的任何其他更改。問題是更新的記錄,NHibernate沒有反映它給我的列表中的變化。當我插入或刪除記錄時,一切正常。只是當我更新時,我得到了這種行爲。我用他們的緩存機制將其縮小到NHibernate。我找不到一種方法使NHibernate從數據庫中檢索,而不是在更新發生後使用緩存。我發佈在NHibernate論壇上,但他們給我的建議沒有奏效。我說了這一點,沒有人回覆。如果我沒有做對,我不會說出我曾嘗試過的。如果你用我嘗試過的東西回答,我會在你的回答的評論中陳述它。

這是我用來檢索列表的代碼:它在建造時

public IList<WorkOrder> FindBy(string fromDate, string toDate) 
{ 
    IQuery query = _currentSession.CreateQuery("from WorkOrder wo where wo.Date >= ? and wo.Date <= ?"); 
    query.SetParameter(0, fromDate); 
    query.SetParameter(1, toDate); 
    return query.List<WorkOrder>(); 
} 

會議傳遞給類。我也可以發佈我的映射文件,但我不確定它是否有任何問題,因爲一切正常。有人看過這個嗎?這是我使用NHibernate的第一個項目,感謝您的幫助。

+0

我在我的應用程序中有同樣的問題,雖然我使用Castle ActiveRecord。當我找到答案時,我會發布它。如果您首先找到答案,請告訴我們! – FryHard 2008-10-10 04:41:16

回答

0

什麼關於刷新? - 看到文檔的9.2. Loading an object

「sess.Save(CAT); sess.Flush(); //強制SQL INSERT sess.Refresh(CAT); //重新讀取狀態(後觸發器執行) 「

3

更新後,從第一級高速緩存中逐出對象。

Session.Update(obj); 
Session.Evict(obj); 

您可能希望首先提交和/或刷新。

相關問題