#silverlight #wcf #caching #ria
#silverlight #wcf #кэширование #ria
Вопрос:
Я использую DomainDataSource с дескрипторами фильтров, но кажется, что DomainDataSource (или DomainContext) кэширует старые данные, а не заменяет их свежими данными из базы данных.
<riacontrols:DomainDataSource
AutoLoad="True"
LoadSize="5"
Name="employeeDomainDataSource"
QueryName="GetEmployeeQuery" Width="0" DomainContext="{Binding EmployeeContext}">
<riacontrols:DomainDataSource.FilterDescriptors>
<riacontrols:FilterDescriptor IsCaseSensitive="False" PropertyPath="Name" Operator="Contains" Value="{Binding ElementName=NameFilter, Path=Text}"/>
</riacontrols:DomainDataSource.FilterDescriptors>
</riacontrols:DomainDataSource>
У меня также есть элемент управления DataPager.
Предположим, что пользователи A и B загружают данные. Пользователь B изменяет имя сотрудника в режиме редактирования. Пользователь A вводит это новое имя в качестве фильтра, данные будут извлечены, но будет отображено старое (кэшированное) имя. Я использовал fiddler и вижу, что правильные данные возвращаются из базы данных и веб-сервиса.
Есть ли какой-либо вариант, при котором я могу отключить это?
Ответ №1:
Я думаю, вам нужно указать параметр загрузки для данных.
Я не могу точно вспомнить, и я не могу найти документацию, но я считаю, что вам нужно переопределить событие LoadingData в DomainDataSource; и установить аргументы.Операция слияния. Попробуйте ‘RefreshCurrent’.
Ответ №2:
Вы должны установить LoadBehavior для RefreshCurrent в вашем методе загрузки: вот так: context.Load(query, LoadBehavior.RefreshCurrent, loadOpt =>{},null);