2010-04-24 53 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