实体框架:缓存管理?

时间:2011-02-02 09:53:12

标签: c# .net entity-framework caching entity-framework-4

我在WCF服务后面使用Entity Framework 4.0。我的问题是程序使用的内存增长很多(从200Mo开始,我在~11Go停止了。

如何管理缓存?我的意思是,我有两个datacontext,其中一个从未用于读取数据,所以我可以禁用缓存吗?

另一方面,我可以指定它可以使用的空间量吗?有没有办法监控这些资源?有没有办法减少资源使用?

谢谢!

2 个答案:

答案 0 :(得分:4)

首先你不应该use shared contexts。在结束操作处理之前,为每个WCF请求创建新上下文并配置上下文!如果您需要一些数据缓存,请在EF之外进行。 EF本身不应该用作缓存,也不能控制这种行为。

如果您在IIS中托管服务,则可以通过在AppPool的高级设置中指定专用内存限制来配置AppPool回收。但它只会杀死该AppPool中运行的所有内容。

答案 1 :(得分:1)

可能发生的是每次调用都在创建一个新的上下文。它保留在内存中,直到连接超时,垃圾收集将其删除。

  • 每次使用时都没有丢弃datacontext吗?
  • 您是否正在关闭与客户的联系?
  • 您是否使用每次通话会话模式?