6

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

我收到了如下错误:“连接当前已关闭”,并想知道这是否是由于多个用户和缓存 ObjectContext,或者是否与多次刷新或停止页面并快速执行其他操作有关(某些我们确实做了得到错误)。

4

2 回答 2

6

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

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

于 2010-02-10T00:04:59.280 回答
5

我不建议这样做。ObjectContext 需要处于活动状态才能观察您正在使用的任何实体的更改,或者您需要在缓存 ObjectContext 之前断开任何活动实体的连接。

如果您没有活动实体,则没有真正需要缓存 ObjectContext。在 EFv1 中,使用断开连接的实体充其量是有问题的,所以我要么不缓存,要么等待允许更多可管理实体(自我跟踪实体、POCO 实体等)的实体框架 v4。

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

于 2010-02-08T22:05:27.357 回答