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