2010-12-27 6 views
3

Я пытаюсь использовать кэширование на стороне клиента в Silverlight украшая службу домена в РИА услуг, как так:Любой, кто получает Silverlight Ria Domain Service OutputCaching для работы?

[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> 

и I я не вижу каких-либо наблюдаемых эффектов кеширования, он возвращается к источнику данных как при любом изменении фильтра, так и при обновлении каждой страницы.

Кто-нибудь получил кэширование на стороне клиента для работы в доменах?

ответ

3

Выходное кэширование отключено, если вы попытаетесь указать дополнительный запрос LINQ. Вы должны изменить выше, чтобы использовать метод запроса, который принимает строковый параметр для имени состояния, а затем выводит кэш.

[OutputCache(...)] 
public IQueryable<State> GetMyStates(string stateNamePart) 
{ 
    return entities.States.Where(st => ...); 
} 

Вы можете читать далее о поддержке OutputCaching в RIA Service Output Caching, к концу этой статьи, он указывает на ограничение, не позволяя дальнейшие запросы LINQ для кэширования работать.

+0

Спасибо, я не использую эту технику сейчас, но ваше объяснение и статья ответили на мой вопрос –