【问题标题】:WCF Data services - Client is caching resultsWCF 数据服务 - 客户端正在缓存结果
【发布时间】:2012-06-10 13:56:22
【问题描述】:

我有一个 WCF 数据服务,我的客户端是一个 WPF 应用程序。

我的 WCF 数据服务中有一个服务操作。类似的东西

[WebGet]
public IQueryable<VSuppliersExtra> GetAllVSuppliers()
{
    List<VSuppliersExtra> lstVsup = new List<VSuppliersExtra>();
    // add some VSuppliersExtra entities to the list
    ........
    return lstVsup.AsQueryable<VSuppliersExtra>();            
}

在我的客户中我有

oCollection = new ObservableCollection<VSuppliersExtra>(jp.CreateQuery<VSuppliersExtra>("GetAllVSuppliers"));
//Open a new window Change collection and update the changes in the DB
.......
//run the same query again
.......
oCollection = new ObservableCollection<VSuppliersExtra>(jp.CreateQuery<VSuppliersExtra>("GetAllVSuppliers"));

现在,一切正常,但第二次调用服务操作将始终让我得到相同的结果而无需更改,直到我重新启动我的应用程序。
我检查了数据库,我所有的更改都保存到了 SQL 服务器,我检查了服务中的函数,它确实返回了更新的数据……但我得到了相同的结果集!!!!!! 客户端有缓存吗???

【问题讨论】:

  • 您可以使用 Fiddler 或 Wireshark 来查看流量情况吗?你得到的是 HTTP 200 还是 304?
  • 我不知道如何将 fiddler 与 WCF 数据服务和 WPF 客户端一起使用。如果我使用浏览器查询我的服务,我会在浏览器和提琴手中看到很好的结果
  • 在提琴手我看到 Cache-Control: max-age=0
  • 带有 HTTP 200 响应代码?响应包含更新的数据?如果是这样,那么我会查看客户端以查看数据是否与返回的数据包匹配。
  • 就是这个问题,客户端不匹配返回包!!!我在客户端使用与浏览器中相同的 URL 执行 Execute。在我的浏览器中,我会在客户端中得到很好的结果,没有显示更新

标签: c# wcf ado.net wcf-data-services


【解决方案1】:

嗯, 我找到了一些文章http://msdn.microsoft.com/en-us/library/gg602811.aspx
我添加了一个 context.MergeOptions = MergeOption.OverwriteChanges;

成功了。

谢谢

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    相关资源
    最近更新 更多