2010-02-08 106 views
6

我想知道是否明智地將實體框架的ObjectContext對象緩存在緩存中;這會給我帶來多個連接的問題,同時用戶會遇到問題嗎?ADO.NET實體框架ObjectContext - 緩存問題

我收到的錯誤是:'connection is currently closed',並想知道是否是由於多個用戶和緩存ObjectContext,或者它與多次刷新刷新或停止頁面並快速執行某些操作有關其他(我們做的事情是爲了得到錯誤)。

+0

你只讀信息,或者您使用Save方法呢? – Zyphrax 2010-02-08 22:02:34

+0

我都是用它讀/寫的。 – 2010-02-09 14:03:28

回答

5

我不會建議。 ObjectContext需要處於活動狀態,以觀察對正在使用的任何實體的更改,或者在緩存ObjectContext之前需要斷開任何活動實體的連接。

如果你沒有活動實體,那麼就不需要緩存一個ObjectContext。在EFv1中,與斷開連接的實體一起工作最多是有問題的,因此我不會緩存或等待允許更多可管理實體(自我跟蹤實體,POCO實體等)的實體框架v4。

只是想我會添加一個最後一點 - 多個線程 - 也可能有問題。應用更改將嘗試提交由ObjectContext跟蹤的所有更改。如果多個用戶共享單個上下文...,那麼希望您可以看到問題。

+0

謝謝,所以如果沒有緩存上下文,你是否建議分離從查詢返回的實體呢? – 2010-02-09 16:35:49

+0

另外,如果我使用HttpContext.Current.Items集合,它只存儲它爲當前請求呢?我不確定這是否是全球用戶的全球性問題,但這又是一個類似的問題嗎?謝謝。 – 2010-02-09 18:24:00

+0

對不起,遲了回覆 - 目前在路上。只要原始上下文得到妥善處置,即可拆卸 – RobS 2010-02-14 01:42:39