我试图通过在RIA服务中修改域服务来使用Silverlight中的客户端缓存,如下所示:
[OutputCache(OutputCacheLocation.Client,3600,UseSlidingExpiration = true)]
public IQueryable<State> GetMyStates()
{
return entities.States;
}
我也在使用带过滤器的DomainDataSource:
<riaControls:DomainDataSource.FilterDescriptors>
<riaControls:FilterDescriptor
Operator="StartsWith"
PropertyPath="StateCode"
Value="{Binding ElementName=txtElementName, Path=Text}" />
</riaControls:DomainDataSource.FilterDescriptors>
我没有看到任何可观察到的缓存效果,它会在任何过滤器更改和每次页面刷新时返回到数据源。
有没有人让Domains服务的客户端缓存工作?
答案 0 :(得分:3)
如果尝试指定其他LINQ查询,则禁用输出缓存。您应该更改上面的内容以使用接受状态名称的字符串参数的查询方法,然后在其上输出缓存。
[OutputCache(...)]
public IQueryable<State> GetMyStates(string stateNamePart)
{
return entities.States.Where(st => ...);
}
您可以在RIA Service Output Caching阅读有关OutputCaching支持的更多信息,在本文末尾,他指出了不允许进一步使用LINQ查询缓存的限制。