在Silverlight RIA Services中禁用DomainContext / DomainDataSource的缓存

时间:2011-10-31 12:15:08

标签: silverlight wcf caching 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,我可以看到从数据库和webservice返回正确的数据。

我可以选择关闭它吗?

2 个答案:

答案 0 :(得分:3)

我认为你需要在数据上指定一个LoadOption。

我记不清楚,我找不到文档,但我相信你需要覆盖DomainDataSource上的LoadingData事件;并设置args.MergeOption。试试'RefreshCurrent'。

答案 1 :(得分:0)

你应该在你的Load方法中将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