我刚开始为一个项目深入研究 ADO.NET 数据服务,但很快就遇到了问题。起初我对性能感到惊讶,但后来我意识到数据被缓存了。我的项目依赖于实时数据,我喜欢使用 ADO.NET 数据服务 REST 查询语法(无需使用 WCF 或 SOAP),但无需缓存。
我在 ADO.NET 数据服务介绍页面(此处)上看到,他们还没有 API 支持来管理缓存持续时间或类似的东西。
任何人都对如何完成此操作或关闭缓存有任何想法?
我刚开始为一个项目深入研究 ADO.NET 数据服务,但很快就遇到了问题。起初我对性能感到惊讶,但后来我意识到数据被缓存了。我的项目依赖于实时数据,我喜欢使用 ADO.NET 数据服务 REST 查询语法(无需使用 WCF 或 SOAP),但无需缓存。
我在 ADO.NET 数据服务介绍页面(此处)上看到,他们还没有 API 支持来管理缓存持续时间或类似的东西。
任何人都对如何完成此操作或关闭缓存有任何想法?
我们最近发表了一篇关于如何使用 ETags 控制从数据服务返回的数据的缓存策略的帖子,http://blogs.msdn.com/astoriateam/archive/2008/04/22/optimistic-concurrency-data-services .aspx
默认情况下,数据上下文的 MergeOption 设置为 AppendOnly。这意味着重新请求只会添加新实体而不会更新现有实体。尝试将 MergeOption 设置为 OverwriteChanges:
this.context.MergeOption = MergeOption.OverwriteChanges;
当我注意到这一点时,这对我有用!如果您使用的是实时数据,那么您可能希望使用 NoTracking 选项完全关闭更改跟踪。
该链接很有帮助,但它并没有真正谈论 ETags 和缓存,它只是提到 ETags 可用于缓存。你有一个例子吗?
ETag的详细信息