2011-08-14 31 views
0

我得到衆所周知的NHibernate異常「非法嘗試將一個集合與兩個打開的會話關聯」。我對它進行了研究,並且我明白其原因,但是我的問題是它在現場隨機發生,當我無法調試它時。哪個集合導致NHibernate異常?

我的問題是,有沒有辦法查詢異常或當前NH狀態,找出哪個集合或對象導致這種情況?

順便說一句,我確實設法從SessionScope繼承,並重寫了一些函數來向它添加日誌記錄,但它並沒有幫助我處理異常本身。

回答

0

當拋出異常時附加調試器會給你提示什麼集合導致了這一點。您可能會保存一個特定的對象,以便您可以嘗試扣除它所引用的集合。如果這沒有幫助,你可以嘗試找到NHibernate會話的實例。一旦你在調試器中找到它,你可以看看session.Statistics。 EntityKeys and CollectionKeys。這些是NHibernate用來跟蹤對象的內部結構。希望它有幫助...

+0

我的問題是,這種情況發生(很少)在該領域,所以我不能附加一個調試器,當它發生。我確實設法獲得了統計實體鍵,但它幾乎是每個在該業務事務中加載的實體,由於這是一個ERP應用程序,所以它非常大。 –