Кто-нибудь может заставить работать выходную кеширование Silverlight Ria? - PullRequest
3 голосов
/ 27 декабря 2010

Я пытаюсь использовать кэширование на стороне клиента в Silverlight, декорируя доменную службу в RIA-сервисе следующим образом:

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

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

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

1 Ответ

3 голосов
/ 28 апреля 2011

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

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

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

...