2013-08-06 58 views
0

我遇到了ASP.NET MVC4和實體框架5的一個奇怪問題:我正在構建的Web應用程序從數據庫中檢索數據,並將其作爲Json發送到頁面上的viewmodel中,然後從中獲取在頁面上的一張桌子。數據表示一些數據點的狀態,這些數據點會不時變化。查詢數據庫時如何避免數據緩存?

現在我觀察到以下行爲:

  • ,當我從我的開發服務器上運行的Web應用程序,一切工作正常和顯示的數據是最新的。
  • 當我部署web應用到生產服務器(會談非常相同的DB),頁面並不代表數據的當前狀態

我不能斷點控制方法檢索數據,因爲它只發生在生產服務器上,但是當我查看Json數據時,我可以看到它實際上是舊數據。所以看起來EF正在緩存檢索到的數據。這是一個嚴重的問題,因爲我們使用這個Web應用程序進行工業監控,因此需要依賴最新的數據。

有沒有人遇到同樣的問題?任何幫助,非常感謝!

+2

如果你使用jquery通過get ajax來調用它,那麼一定要添加$ .ajaxSetup({cache:false}});到您的頁面 – Slicksim

+0

感謝您的提示,我會更好地包括這一點! – Robert

回答

1

我不知道實體框架,但我認爲這跟變化跟蹤有關。我試圖禁用它來強制EF重新查詢數據庫,我認爲(和其他人請糾正我,如果我錯了),但除非SaveChanges已被調用ObjectContext如果你重新查詢相同的數據數據庫將不會再被查詢。

我用MergeOption = MergeOption.NoTracking(在ObjectSet上)在我的項目中關閉它。

+0

謝謝,這個工作!緩存/對象跟蹤通常是一個好主意,但這裏數據庫中的數據會從其他應用程序中更改。在我的情況下,數據一致性比性能更重要。 – Robert

相關問題