1

我有一個基於此excellent article的EF4/ASP.NET Web應用程序,其結構可以使用POCO和通用存儲庫。維護請求之間的狀態和數據上下文

該應用程序相對比較複雜,其中一個頁面涉及多個實體的選擇和鏈接以構建複雜的用戶配置文件。這需要跨多個帖子訪問多個實體類型(20個左右)和關聯的存儲庫。

當存儲庫第一次被訪問時,它使用現有的數據上下文(如果存在),否則它會創建一個新的上下文。問題是,如果上下文的生命週期只是每個請求(如文章中所建議的那樣),那麼您必須處理多個上下文以及從上下文中分離和附加實體的複雜性。

我的解決方案是通過創建一個包含所有必需存儲庫(初始化以共享相同上下文)的視圖模型以及任何關聯數據並將此模型存儲在Session變量中,在後續從Session中檢索頁面請求。因此,在保存配置文件之前,維護所有帖子的相同上下文。

這工作正常,但我擔心,我實際上不知道什麼是存儲在模型會話變量或更重要的是會話變量的大小。

所以我想兩個問題:首先我應該尋找一個更好的解決方案來處理帖子問題的共享上下文(歡迎任何建議)?其次,當它包含一個存儲庫和上下文時,實際存儲在Session中的內容是什麼?

+0

好問題。我即將面對同樣的問題,但我還沒有真正瞭解細節。我主要關心的是如何使用ajax請求來處理子實體的編輯,同時仍然保持隨時取消整個事務的能力。到目前爲止,我想我可能最終不得不將整個事情放在Session中,在每個帖子上操作它,然後在將來的某個時間調用SaveChanges(),但我還不確定。 – jeremcc 2010-06-17 15:43:41

回答

1

裏克施特拉爾覆蓋使用LINQ 2 SQL回一個非常類似的話題在2008年初..

http://www.west-wind.com/weblog/posts/246222.aspx

其相當長的閱讀,我都從來沒有實現過,所以不能建議。它看起來像一個漫長的工作來執行。

我處於與你自己類似的位置,這就是爲什麼我遇到這個帖子。

我不知道如果只是實例存儲庫在必要時是要走的路,讓SQL Server的管理連接池(假設你正在使用,當然SQL Server)的