如何强制WCF数据服务刷新实体?

时间:2012-03-16 10:15:47

标签: sql-server wcf service refresh entities

我正在使用WCF数据服务来访问MSSQL数据库。如果客户端请求数据(例如,从表“Projects”),我建立我的缓存,如下所示:

var collection = new ObservableCollection<Project>();
foreach (var project in this.Entities.Project)
{
   collection.Add(project);
}

return collection;

如果我想刷新列表,我只需要调用

collection.Clear();

再次调用上述方法。如果我编辑项目并按上述方式刷新列表,它工作正常,但如果我更改一个客户端实例上的数据并刷新另一个客户端实例上的列表,则服务不会加载已更改的项目。

我是如何强制DataService重新加载整个实体(例如“Projects”),即使从服务的角度来看,没有任何变化?

1 个答案:

答案 0 :(得分:0)

可能的解决方案:

public partial class Entities
{
    public void RefreshProject(Project pr)
    {
        this.Detach(pr);
        pr = this.Project.Where(p => p.Id == pr.Id).Single();
    }
}

用法:

  

entities.RefreshProject(项目);