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)的