保持实体框架上下文开放

时间:2012-08-15 10:43:48

标签: .net entity-framework

我有几组现场所有用户使用的数据。我传统上会考虑缓存这些。

我当前的EF设置使用uow和repository模式,所以我倾向于使用上下文来处理单个事务并处理它。

我计划引入一些用户交互,因此曾经完全静态的数据将不会被允许用户添加,删除和编辑。我估计数据仍然只会每2分钟刷新一次左右仍然是一个合理的缓存候选者。

一种选择是保持缓存的想法,但在每次更改后检索和重新缓存。最大的数据集将有大约5-10k行。

我想到的另一个选择是为每个数据集创建一个上下文,我保持打开(静态)并以这种方式管理数据。我对EF很新,所以我不确定这是好是坏,但从表面看,它似乎与缓存的工作方式类似。我唯一不确定的是如何处理额外的表数据,因为我认为你无法跟踪和使用Include()。

有人对此提出建议吗?

2 个答案:

答案 0 :(得分:0)

你绝对应该缓存你的数据集,并在单个原子事务之后处理你的上下文。

亚历克斯詹姆斯写了一篇关于这个的伟大blog post

一些快速的观点是上下文不是线程安全的,并且对象上下文可能有来自先前事务的剩余部分可能会改变结果。

答案 1 :(得分:0)

对问题采取了不同的方法。

而不是每笔交易,我现在为每个httprequest提出一个解决问题的方法。