出于性能优化的原因,我正在重构我的 ASP.NET MVC 4 WebAPI 项目。在我的控制器代码中,我在上下文(DbContext、EF6)中搜索实体。有几千个这样的实体,每小时添加新的实体(即“缓慢”),它们很少被删除(我不在乎是否仍然在上下文的缓存中找到已删除的实体!)并且永远不会修改的。
在阅读了这个问题的答案、这个和其他几个讨论的答案之后,我仍然不确定将单个静态 DbContext 用于上述目的是一个坏主意 - 一个从不更新数据库的 DbContext。
在性能方面,我不担心实例化成本,而是担心如果为每个请求创建 DbContext 缓存请求实体的无用性。我还使用了二级缓存,这使得上下文的持久性更加尖锐。
我的问题是: 1. 无论具体实现如何,在我的情况下,“静态”DbContext 是一个有效的解决方案吗?2. 如果是这样,实现这种 DbContext 的最合适的方式是什么?3.我是否应该定期“刷新”上下文以清除缓存以防止 if 变得太大?