Отключить кэширование DomainContext / DomainDataSource в службах RIA Silverlight - PullRequest
2 голосов
/ 31 октября 2011

Я использую 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>

У меня также есть DataPagercontrol.

Предположим, что пользователь A и B загружают данные.Пользователь B меняет имя сотрудника в режиме редактирования.Пользователь A вводит это новое имя в качестве фильтра, данные будут выбираться, но отображается старое (кэшированное) имя.Я использовал fiddler, и я вижу, что правильные данные возвращаются из базы данных и веб-службы.

Есть ли вариант, где я могу отключить это?

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

Я думаю, вам нужно указать LoadOption для данных.

Я не могу точно вспомнить и не могу найти документацию, но я считаю, что вам нужно переопределить событие LoadingData в DomainDataSource;и установите args.MergeOption.Попробуйте RefreshCurrent.

0 голосов
/ 04 ноября 2011

Вы должны установить для LoadBehavior значение RefreshCurrent в вашем методе загрузки: вот так: context.Load(query, LoadBehavior.RefreshCurrent, loadOpt =>{},null);

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

...