2011-11-25 80 views
2

我有一堆實體,我想知道哪一個已經與NHibernate保存()(沒有刷新)。我該怎麼做 ?有沒有辦法知道一個實體是否由NHibernate管理?

+0

*流利* NHibernate,具體還是隻是NHibernate?也就是說,您是否試圖通過FNH還是HBM來區分實體? – Jay

+0

不,我想知道一個實體是否被調用了Save()。 – Z0RrO

+0

感謝您的澄清。這與Fluent沒有任何關係。你是否也可以訪問調用'Save()'的'ISession',或者只訪問實體? – Jay

回答

0

如果你想知道,如果事情已經由NHibernate的堅持,你很可能只是檢查「ID」字段,看看它是否已經從默認值

+6

ID的存在並不保證該實體已被保留。 Identity/Native只是NHibernate支持的衆多身份生成算法之一。其他人,如HiLo(用於減少對數據庫的查詢並提高性能),在將記錄插入數據庫之前(但不一定是在之前)分配標識符。 – Jay

4

按照Hibernate's Documentation改變,會話有一個名爲方法Contains(obj)

boolean contains(Object object) 
    Check if this instance is associated with this Session. 

Parameters: 
    object - an instance of a persistent class 

Returns: 
    true if the given instance is associated with this Session 

好吧,我想這應該在你的情況下工作,因爲你的新創建的對象並不在通知後的Isession調用Save(或Get)前。試試看,告訴我們會發生什麼。

另一種選擇是在ISession之上創建一個抽象,並實現自己的代碼來檢查實體是否已被保存。

相關問題