Отключить кэширование DomainContext / DomainDataSource в службах Silverlight RIA

#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);

http://msdn.microsoft.com/en-us/library/system.servicemodel.domainservices.client.loadbehavior(v=vs.91).aspx