0

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

我当前的 EF 设置使用 uow 和存储库模式,因此我倾向于将上下文用于单个事务并处理它。

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

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

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

有人对此有建议吗?

4

2 回答 2

0

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

我现在不是针对每个事务,而是针对每个 httprequest 提出一个 uow 来解决这个问题。

于 2012-09-19T17:34:20.580 回答
0

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

亚历克斯詹姆斯写了一篇很棒的博客文章

几个要点是上下文不是线程安全的,并且对象上下文可能有以前事务的剩余物,这可能会改变结果。

于 2012-08-15T11:35:34.367 回答