2010-04-24 54 views
0

我有一個IQueryable函數。在那個函數中,我需要將數據存儲和檢索到Session;你們能否指引我朝着正確的方向前進?在MVC域模型庫中使用會話變量

我看了HttpSessionStatBase會議通常從HttpContext.Current採取,但這似乎不可能在圖書館做。我錯過了什麼嗎?

在此先感謝。

回答

2

我會避免有一個依賴於靜態HttpContext。我的首選策略是從控制器中的會話中提取信息,並將其作爲數據訪問層/存儲庫中的參數(或設置爲屬性)傳遞。如果您覺得必須直接使用Session,那麼我會以相同的方式將它提供給DAL /存儲庫 - 作爲屬性或參數。但請注意,您正在增加DAL /存儲庫與控制器之間的耦合。這會使得在非web設置中重用非常困難,也就是說,如果您需要通過Windows服務使用DAL /存儲庫,您必須創建一個虛擬會話來與DAL /存儲庫交互,或者控制檯應用程序,例如。

+0

因此,最好在控制器中使用會話變量來處理呢? – Jason 2010-04-24 13:40:39

+0

是的。您的控制器已經與網絡環境耦合(必然),因此您不會引入任何新的耦合。你的數據層不應該知道(或關心)它的參數來自何處。它不應該知道它正在被Web應用程序使用 - 正是因爲您可能需要它來使用一些沒有Web上下文的脫機配置或數據收集過程。 – tvanfosson 2010-04-24 13:43:35