-2

我有一個奇怪的行爲,我無法找到任何天..解決方案的 行爲我的經驗是經典LazyInitializationExceptionno session or session was closed 這是通常沒有時情境會話,並試圖訪問延遲加載的屬性/集合,但是這不是我的情況,因爲我有:NHibernate的延遲加載懶=額外的沒有會話或會話關閉

  • 會話的每個請求會話使用Spring.NET OpenSessionInViewModule
  • 包圍的會議開界,上下文(web請求)
  • 帶有lazy =「extra」或帶有「set」(映射集合集合)的集合作爲「list」(映射列表集合)的實體(此問題主要由lazy = extra ..引起)
  • 看起來額外cound計數語句來完成,但訪問整個集合拋出異常

調查通常的問題之後:

  • 沒有會話打開
  • 的對象不依賴於特定的會話
  • Session.ClearSession.Evict有人呼籲(所以任何偷懶的驅逐實例將工作)
  • 我發現爲什麼這會發生沒有明確的原因,Spring.NET WebSupportModule未註冊.. A怪行爲是如果我在NHprof配置文件中,我看到在新的會話中的異常,換句話說,上下文會話正常工作, 但是,當引發異常時,該異常在輔助會話中可視化..但NO代碼打開會話,並且單個上下文會話 已打開。

任何人都知道還有什麼其他原因可能導致這樣的情況? 在此先感謝

+1

如果您發佈了一些代碼示例,說明如何設置,這將有所幫助。 –

+0

正如我在問題中所說的,代碼示例並不重要,重要的是對上下文的描述。上下文/配置的每個部分都作爲每個產品文檔的最佳實踐制定 – Hoghweed

+0

我不是100%確定你的問題是什麼,但是可能需要知道'lazy =「extra」'和'.count()'需要一個開放的會話,因爲它執行「select count(*)'而不是'select *'和內存計數。 – Rippo

回答

0

很難診斷沒有看到一些代碼,但問題聽起來very similar to this。除了在另一個位置設置會話上下文(類似於前兩個要點)和WebSupportModule沒有註冊(如在最後一點中)之外,在鏈接案例中使用了OpenSessionInView。

另一方面,我對Spring.NET一無所知。

相關問題