Web services EF 1 web服务应用程序中的内存使用在每次调用查询缓存问题时都会不断增加?

Web services EF 1 web服务应用程序中的内存使用在每次调用查询缓存问题时都会不断增加?,web-services,entity-framework,query-cache,efpocoadapter,Web Services,Entity Framework,Query Cache,Efpocoadapter,希望你们中的一些聪明人能在这里帮助我 我们有一个ASP.NET web服务应用程序,使用EntityFramework1和EFPocoAdapter运行此web服务的应用程序池的mem使用量在每次web服务调用时都会不断增加。我们目前监控其mem使用量,一旦超过1GB,我们将回收应用程序池以释放内存 我们在“using”语句中实例化每个web方法中的对象上下文,这样就不会留下开放的对象上下文(用efprof观察)。 因此,我使用Ants memory profiler 7跟踪正在发生的事情,在第

希望你们中的一些聪明人能在这里帮助我

我们有一个ASP.NET web服务应用程序,使用EntityFramework1和EFPocoAdapter运行此web服务的应用程序池的mem使用量在每次web服务调用时都会不断增加。我们目前监控其mem使用量,一旦超过1GB,我们将回收应用程序池以释放内存

我们在“using”语句中实例化每个web方法中的对象上下文,这样就不会留下开放的对象上下文(用efprof观察)。

因此,我使用Ants memory profiler 7跟踪正在发生的事情,在第一次调用web服务(此时EF框架生成其视图等)之后,我拍摄了一张快照。然后进行相同的呼叫并拍摄另一个快照Ants显示自上次快照以来创建的新对象几乎都与System.Data.Common.QueryCache.QueryCacheManager相关。

我知道缓存的目的是提高性能,但在我们的情况下,我认为我们不需要缓存每个查询计划,因为由于我们主要应用/业务的性质,重复这些调用的可能性很小

所以,我的问题是否有办法关闭此缓存,或者我在这里找错了方向,而我却没有意识到还有其他事情发生


我已经在网上搜索了这个问题的答案,我所能找到的就是MergeOption属性,它似乎与实体跟踪有关,以提高速度/性能。

如果不修改数据,只需选择它,就可以简单地关闭对象修改跟踪:

datacontext.ObjectTrackingEnabled = false;

在Linq2SQL的类似情况下,它也适用于我。

如果您不喜欢,可以单击“编辑…”,然后回滚我的格式更改。不幸的是,我没有其他输入。有趣的问题!你知道EF4是否表现出同样的行为吗?我猜
System.Data.Common.QueryCache
是EF使用的一些低级ADO.NET名称空间,但不是特定于EF的,对吗?谢谢格式化,它确实有帮助!实际上还没有尝试使用EF4,但我相信查询缓存是EF在所有版本中的一个特性。