目前,我的網站基於MVC和針對SQL Server 2005數據庫運行的實體框架。到目前爲止,它一直運行得非常順利,我真的很喜歡MVC和它更簡潔的代碼(並沒有巨大的視圖狀態或靈魂破壞回發;))如何跨網站用戶共享實體框架模型
最近我正在升級網站使用簡單論壇系統,這是我開始遇到問題的地方。當我使用兩種不同的瀏覽器測試網站時,如果我在一個瀏覽器中創建或回覆了帖子,其他瀏覽器無法看到帖子。
目前,該網站的每位訪問者都獲得了他們自己的實體模型副本,我將其存儲在其會話數據中。很明顯,這是一個問題,因爲一個模型的更新沒有被轉移到另一個模型。
作爲一個測試,我嘗試存儲模型的一個副本,所有訪問者將該模型分配給一個靜態變量。這工作,兩個瀏覽器可以看到彼此修改。但是,它有其副作用。例如,如果我同時啓動了兩個瀏覽器並初始化模型,則一個瀏覽器會崩潰,另一個會正常工作,儘管我使用鎖定對象,理論上它們中的一個應該延遲到模型準備好了(當然,我可能已經實現了這個錯誤;))。此外,最初這個網站確實爲所有訪問者使用了一種模式,並且當它處於活動狀態時,它經常關閉 - 當它實現時,會終止IIS應用程序池。現在我不確定這是否有關係,但我不想重新引入導致此關閉的任何錯誤。
所以,我的問題確實很簡單 - 對所有網站用戶使用相同模型的最佳方式是什麼,以便他們都能看到更新,或者他們是否有單獨的副本(我想這些副本會有性能時間影響)模型如何檢測數據庫中的變化並根據其進行更新。
在此先感謝您的任何建議!
問候;
Richard Moss
實體模型是否支持緩存?我認爲他們做了「聰明的東西」,比如生成SQL語句,只返回請求的數據 - 你應該如何緩存,我真的不知道。我從來沒有直接處理數據庫,一切都通過服務/存儲庫類到實體模型本身提供所有的數據訪問。 – 2010-03-18 18:59:42
@richardmoss:補充說明一下。希望它實際上澄清:) – 2010-03-19 07:28:06
彼得, 感謝您的信息,聽起來像我完全錯誤的方式,所以時間爲一些代碼雜耍和利用緩存。 再次感謝! Richard Moss – 2010-03-20 11:52:08