2009-12-21 82 views
0

我一直在使用實體框架和ASP MVC一段時間。我已經將實體對象存儲在HttpContext.Current.Session中,以便始終使用同一個會話。現在我遇到了一些問題,我想知道這是否是一個壞主意,如果是的話,我應該怎麼做,否則。ASP.NET MVC保存實體會話

我現在的問題是,實體對象緩存數據,並且一個用戶無法看到其他用戶所做的更改。

+1

你究竟想要做什麼? – jfar 2009-12-21 16:46:41

回答

1

通過這本書,你會希望你的對象上下文存在最短的時間。

所以你創建一個上下文,獲取一些數據,將你的視圖返回給客戶端。

並配置一切。

當你的db無法處理你的負載時開始緩存。

3

會話基本上是一個特定於用戶的散列表結構。如果要存儲可供系統的所有用戶看到的數據,則可以使用Application範圍或緩存。

這從MS文章涵蓋了國家管理的不同選項,包括會話和應用程序:

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

緩存是,它允許你做的事情,比如集合到期略有不同。如果你不需要這種功能,我會建議堅持應用程序狀態。文章緩存從MS:

http://msdn.microsoft.com/en-us/library/6hbbsfk6(VS.71).aspx

2

在請求/會話或任何與存儲器中存儲實體的問題是,你有,如果你有一個新的ObjectContext爲每個請求/會話要非常小心什麼,因爲並且實體一次只能附加到一個ObjectContext上,並且可以很容易地忘記(在同一會話中的請求之間)分離或正確共享對象(在不同會話中的併發請求之間)。

看看這個Tip有關如何請求/用戶/會話等之間的高速緩存數據的線索

希望這有助於

亞歷

+1

我認爲他寫的關於在會話中存儲ObjectContext,我會強烈勸阻,因爲ObjectContext很容易被搞砸。每個請求的ObjectContext是我的解決方案。 – LukLed 2009-12-21 23:04:42