【问题标题】:Maintaining state and data context between requests维护请求之间的状态和数据上下文
【发布时间】:2010-06-17 11:40:52
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 好问题。我即将面临同样的问题,但我还没有真正进入细节。我主要关心如何使用 ajax 请求处理子实体的编辑,同时仍然保持随时取消整个事务的能力。到目前为止,我认为我最终可能不得不将整个事情放在 Session 中,在每个帖子上对其进行操作,然后在将来的某个时间点调用 SaveChanges(),但我还不确定。

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


【解决方案1】:

Rick Strahl 在 2008 年初使用 Linq 2 SQL 讨论了一个非常相似的主题..

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

它的阅读时间很长,我从未实现过它,所以不能推荐它。实施起来似乎是一项漫长的工作。

我和你的处境相似,这就是我看到这篇文章的原因。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2011-12-16
    • 2017-01-10
    • 2023-03-07
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多