2010-03-21 79 views
1

我一直在mvc asp.net中创建一个web应用程序。我有三个不同的项目/解决方案:MVC ASP.NET,ObjectContext和Ajax。奇怪的行为

  • 一个解决方案包含EF(DAL)的模型,所有的方法在模型中添加,更新,删除和查询对象时,ObjectContext的是在这里进行管理的每请求基础。
  • 其他解决方案包含一个内容管理系统,授权用户通过前面提到的DAL插入,删除,更新和访问对象。
  • 而最后一个解决方案包含所有用户(每天有数千用户)访问的网页,以及执行的唯一操作是选择,不更新,插入或删除。

所有的选择都是针对之前提到的DAL(第一个解决方案)执行的。这里的问题是,我不确定HttpContext生命周期ObjectContext是否是最佳解决方案。

我的web应用程序中有很多ajax调用,我不确定一个httpcontext是否会干扰应用程序的性能。我注意到,在某些情况下,特别是当有人在内容管理器中插入,更新或删除时,当您尝试点击用户Web应用程序的任何链接时(任何用户访问的Web应用程序 - 第三个是我之前提到的)网页冻结,它仍然停止传输数据。为了阻止此行为,您必须停止并刷新或点击链接上的多次。对不起,我的英语不好。我希望你能理解并能帮助我解决这个问题。提前Thanx。

+1

如果您可以将问题分为几个段落,阅读起来会容易得多。 – 2010-03-21 05:24:46

+0

谢谢,你是对的 – fabianadipolo 2010-03-21 14:05:48

回答

0

对于每个操作,您都需要一个新的ObjectContext,因为它旨在用于工作单元。您希望在调用SaveChanges之后处置它,因为如果在保存更改后使用它从中进行选择,则会得到意想不到的结果。

+0

桑德,谢谢你花时间回答。我已经为每个HttpRequest创建ObjectContext来实现一个存储库模式。 当你说我必须为每一个操作创建一个ObjectContext你的意思是,对于每一个选择,更新,插入我需要创建一个ObjectContext?请注意,在同一页面我有多个请求。例如主页以ajax请求的形式执行多个选择:所有这些方法的GetArticles,GetEvents,GetPreview等都在一个请求中调用。然后用你的方法,我必须为每个创建objectContext? – fabianadipolo 2010-03-21 14:22:32

+0

当它只读取时,保持它的时间不会太长。在保持较长的时间内也没有胜利。数据库连接将在每次​​查询后关闭,并为每个连续的查询重新打开。在更新数据库时,确实需要在保存更改后处理上下文,因为后续选择的结果不可信 – 2010-03-21 15:44:30