2010-02-08 88 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