ADO.NET实体框架ObjectContext - 缓存问题

时间:2010-02-08 21:56:57

标签: c# .net linq entity-framework ado.net-entity-data-model

我想知道将实体框架的ObjectContext对象缓存在Cache中是否明智;这会给我带来多个连接的问题,同时用户会遇到问题吗?

我遇到了以下错误:'连接当前已关闭',并且想知道这是否是由于多个用户和缓存ObjectContext,或者是否与多次刷新或停止页面以及快速执行其他操作有关(我们为了得到错误而采取的措施)。

2 个答案:

答案 0 :(得分:6)

我同意上述内容。但是,我确实在HttpContext.Current.Items集合中缓存了对象上下文而没有任何问题。也很好读:

http://dotnetslackers.com/articles/ado_net/managing-entity-framework-objectcontext-lifespan-and-scope-in-n-layered-asp-net-applications.aspx

答案 1 :(得分:5)

我不建议。需要激活ObjectContext以观察对您正在使用的任何实体的更改,或者在缓存ObjectContext之前需要断开任何活动实体。

如果没有活动实体,则不需要缓存ObjectContext。在EFv1中使用断开连接的实体最多是有问题的,所以我要么不缓存或等待实体框架v4,它允许更易于管理的实体(自我跟踪实体,POCO实体等)。

以为我会添加最后一点 - 多线程 - 也可能有问题。应用更改将尝试提交ObjectContext跟踪的所有更改。如果多个用户共享一个上下文......好吧,希望你能看到问题..