维护请求之间的状态和数据上下文

时间:2010-06-17 11:40:53

标签: .net asp.net-mvc entity-framework session entity-framework-4

我有一个EF4 / ASP.NET Web应用程序,其结构基本上基于此excellent article使用POCO和通用存储库。

应用程序相对复杂,有一个页面涉及选择和链接多个实体以构建复杂的用户配置文件。这需要访问多个实体类型(大约20个)以及跨多个帖子的关联存储库。

首次访问存储库时,如果存在,则使用现有数据上下文,否则创建新上下文。问题在于,如果上下文的生命周期仅是每个请求(如文章中所建议的那样),那么您必须处理多个上下文以及从上下文中分离和附加实体的复杂性。

我的解决方案是通过创建包含所有必需存储库(初始化以共享相同上下文)的单个视图模型以及任何关联数据来共享帖子之间的上下文,并将此模型存储在Session变量中,从后续页面上的Session中检索要求。因此,在保存配置文件之前,在所有帖子中保持相同的上下文。

这很好但是我担心我实际上并不知道模型会话变量中存储的确切内容,或者更重要的是会话变量的大小。

我认为有两个问题:首先,我应该寻找一个更好的解决方案来处理帖子问题的共享上下文(欢迎任何建议)?其次,当它包含一个存储库和上下文时,实际存储在Session中的是什么?

1 个答案:

答案 0 :(得分:1)

Rick Strahl在2008年初使用Linq 2 SQL报道了一个非常相似的话题。

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

它读了很长时间,我从来没有实现它,所以不能推荐它。这看起来像是一项冗长的工作。

我与自己处于类似的位置,这就是我遇到这篇文章的原因。

我想知道是否只需要在必要时实例化存储库,并让sql server管理连接池(假设您当然使用的是sql server)