2012-07-25 50 views
0

我在某處讀到,在C#Desktop應用程序中爲每個Form/Presenter使用新會話都是一個好主意。所以我決定每次選項卡索引更改時關閉會話。任何DB活動都會打開一個新的會話。 我在每個選項卡中都有一個樹形視圖,並且數據在它應該加載的時候(例如,當打開相應的節點時)。 唯一的問題是當我離開Tabpage並且樹有一些打開的節點,然後我回來。如何在切換它們時在每個頁面頁面上處理一個會話

有兩種不同的情況:

  • 我點擊我已經有了一看我離開前,再訪該選項卡
  • 我點擊葉節點從未一直看着葉節點在那個程序運行(但我們可以看到它,因爲父節點被展開)

在第一種情況下,一切正常。 在第二種情況下,我得到一個LazyInitialization異常。

1)我可以強制節點加載數據或記住數據,但會話已關閉嗎? 我不喜歡這個程序只使用一個會話的想法。

2)如果我記得樹狀態,崩潰它並重新展開必要的節點,你認爲它可能工作嗎?它會像用戶打開它時那樣加載數據嗎?

最好的問候,Expecto

回答

1
當你去與現有的數據反饋樹形視圖(這將引發notinitialized除外)其重新安裝到新創建的會話重新啓用惰性加載標籤

。使用非明顯session.Lock(rootentity, LockMode.None);重新附加對象圖

+0

太好了,聽起來不錯。我應該重新附加完整的樹視圖還是解決問題的擴展節點? – 2012-07-27 08:15:51

+0

我會重新連接整個樹視圖,因爲這應該更簡單。會議只存儲引用 – Firo 2012-07-27 08:27:21

+0

非常感謝,這應該工作! – 2012-07-27 08:29:26

相關問題