Как заставить службу данных WCF обновлять сущности? - PullRequest
2 голосов
/ 16 марта 2012

Я использую Службу данных WCF для доступа к базе данных MSSQL. Если клиент запрашивает данные (например, из таблицы «Проекты»), я создаю свой кэш следующим образом:

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

return collection;

Если я хочу обновить список, я просто звоню

collection.Clear();

и вызовите вышеупомянутый метод снова. Если я редактирую проект и обновляю список, как описано выше, он работает нормально, но если я изменяю данные на одном экземпляре клиента и обновляю список на другом, служба не загружает измененный проект.

Как я могу заставить DataService перезагрузить целую сущность (например, «Проекты»), даже если с точки зрения службы ничего не изменилось?

1 Ответ

0 голосов
/ 29 июня 2012

Возможное решение:

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

Использование:

entity.RefreshProject (project);

...