2010-12-27 5 views
3

Ich versuche Client Side Caching in Silverlight zu verwenden, indem wie so einen Domain-Service in einem RIA-Service Dekoration:Jeder kann den Silverlight Ria Domain Service OutputCaching nutzen?

[OutputCache(OutputCacheLocation.Client,3600,UseSlidingExpiration = true)] 
public IQueryable<State> GetMyStates() 
{ 
    return entities.States; 
} 

Ich bin auch einen DomainDataSource mit einem Filter mit:

<riaControls:DomainDataSource.FilterDescriptors> 
<riaControls:FilterDescriptor 
    Operator="StartsWith" 
    PropertyPath="StateCode" 
    Value="{Binding ElementName=txtElementName, Path=Text}" /> 
</riaControls:DomainDataSource.FilterDescriptors> 

und ich Ich sehe keine beobachtbaren Caching-Effekte, es geht sowohl bei jedem Filterwechsel als auch bei jeder Seitenaktualisierung auf die Datenquelle zurück.

Hat jemand clientseitige Zwischenspeicherung für Domains Services erhalten?

Antwort

3

Die Ausgabezwischenspeicherung ist deaktiviert, wenn Sie versuchen, eine zusätzliche LINQ-Abfrage anzugeben. Sie sollten das Obige ändern, um eine Abfragemethode zu verwenden, die einen Zeichenfolgenparameter für den Statusnamen akzeptiert und dann den Cache darauf ausgibt.

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

Sie können an RIA Service Output Caching, gegen Ende des Artikels weiter über die Output Unterstützung lesen, weist er die Beschränkung heraus nicht so dass weitere LINQ-Abfragen für das Caching zu arbeiten.

+0

Danke, ich benutze diese Technik jetzt nicht, aber Ihre Erklärung und der Artikel beantwortet meine Frage –

Verwandte Themen