我使用带有过滤描述符的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,我可以看到从数据库和see服务返回了正确的数据。
有什么办法可以把它关掉吗?
发布于 2011-10-31 22:58:37
我认为您需要在数据上指定一个LoadOption。
我记不清了,也找不到文档,但我相信您需要重写DomainDataSource上的LoadingData事件,并设置args.MergeOption。尝试“刷新当前”。
发布于 2011-11-04 10:34:30
您应该在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
https://stackoverflow.com/questions/7953553
复制相似问题