Мое приложение представляет собой клиент-серверное решение, использующее службу данных ADO.NET. Служба данных предоставляет TransactionSummaryData следующим образом:
public IQueryable<TransactionSummary> TransactionSummaries
{
get { return MainForm.transactionSummaryData.Items.AsQueryable(); }
}
TransactionSummaryData имеет тип TransactionSummaries, свойство items которого определяется следующим образом:
public List<TransactionSummary> Items
На стороне клиента у меня есть несколько элементов управления, связанных с запросом LINQ, который работает с TransactionSummaries:
AvailibilityBox.DataContext = (from salesdata in srv.TransactionSummaries
where salesdata.PerformanceID == selectedshow.performancedata.PerformanceID
select salesdata);
Это выполняется многократно, так как selectedshow.performancedata.PerformanceID изменяется в ответ на переход пользователя по пользовательскому интерфейсу.
Пока все хорошо. Тем не менее, когда TransactionSummaryData на сервере обновляется с помощью некоторого другого кода на сервере, клиент продолжает отображать «устаревшие» данные и не замечает обновления. Я предполагаю, что это из-за какого-то кеширования. После отладки кода я вижу, что сервер отправляет правильные данные, но запрос LINQ на клиенте продолжает возвращать устаревшие данные. Перезапуск клиента приводит к отображению правильных данных.
Я думаю, что мне здесь не хватает чего-то очевидного, но я не понимаю, как управлять кэшированием на клиенте или сделать объект недействительным без повторного установления соединения.