2009-06-21 3 views
1

Мое приложение - это клиент/серверное решение с использованием службы данных ADO.NET. Служба данных выставляет transactionSummaryData следующим образом:Служба данных ADO.NET не динамически обновляется

public IQueryable<TransactionSummary> TransactionSummaries 
{ 
    get { return MainForm.transactionSummaryData.Items.AsQueryable(); } 
} 

transactionSummaryData имеет TransactionSummaries типа, элементы которого свойство определяется следующим образом:

public List<TransactionSummary> Items 

На стороне клиента, у меня есть некоторые элементы управления привязки данных к запросу LINQ который работает на TransactionSummaries:

AvailibilityBox.DataContext = (from salesdata in srv.TransactionSummaries 
           where salesdata.PerformanceID == selectedshow.performancedata.PerformanceID 
           select salesdata); 

Это получает много раз выполнены в виде изменений в selectedshow.performancedata.PerformanceID отклика на пользовательский интерфейс.

Все до сих пор. Однако, когда транзакцияSummaryData на сервере обновляется каким-то другим кодом на сервере, клиент продолжает отображать «устаревшие» данные и не замечает обновления. Я предполагаю, что это связано с каким-то кешированием. Отлаживая код, я вижу, как сервер отправляет нужные данные, но запрос LINQ на клиенте продолжает возвращать устаревшие данные. Перезапуск клиента приводит к отображению правильных данных.

Я думаю, что здесь отсутствует что-то очевидное, но я не вижу, как контролировать любое кэширование на клиенте или аннулировать объект без повторного подключения.

ответ

1

Эмре MERIC на форумах Microsoft удалось ответить на мой вопрос:

вариант слияния по умолчанию для DataServiceContext является AppendOnly, а это означает, что если лицо, возвращаемые запрос уже отслеживается контекстом, никаких изменений к нему не будет. Вы можете установить MergeOption в OverwriteChanges, если вы хотите, чтобы объект постоянно обновлялся из сохраняемого хранилища.

MSDN Reference

0

Если вы установите для свойства DataContext свойство ObjectTrackingEnabled значение false, ваша проблема, надеюсь, исчезнет. Смотрите ссылку MSDN здесь:

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.objecttrackingenabled.aspx

+0

Я не могу найти "ObjectTrackingEnabled" собственность на DataServiceContext я использую (не DataContext). –

+0

Упс ... полностью неверно истолковывает первые два предложения. – womp

Смежные вопросы