Domanda

Sto usando modello L2S Repository nel mio ASP.Net 3.5 web app. Ma io non sono del tutto soddisfatto della prestazione come sperimentato in vivo. Ho cercato google e sono imbattuto in SQL caching utilizzando SqlCacheDependency Class. Ma ho avuto have'nt qualsiasi tutorial o link che vi spiegherà come usarlo nel mio scenario.

Quindi ragazzi aiutarmi ... Qualsiasi aiuto o consiglio sarà molto apprezzato.

Si prega di utilizzare alcuni codici di esempio o riferimenti on-line ....

Grazie in anticipo

Aggiornamento: Il mio Repository

public interface IRepository<T> where T : class
{
    T GetById(int id);
    IQueryable<T> GetAll();
    void SaveOrUpdate(T entity);
    void DeleteOnSubmit(T entity);
}
È stato utile?

Soluzione

A volte LINQ to SQL query fa in modi inaspettati. Hai controllato come le vostre query LINQ sono tradotti in SQL? Utilizzare SQL Server Profiler (disponibile dal menu Strumenti server SQL Management) per controllare le query generate. Ho scritto alcune informazioni su di esso qui .

Una volta che sai di avere buone domande generate, si dovrebbe guardare se l'esecuzione di qualcuno di loro è un collo di bottiglia. Il profiler può aiutare anche qui. Se alcune query sono in esecuzione lenta, provare ad aggiungere gli indici appropriati.

A meno che non si dispone di un sito molto alto volume, questi passaggi dovrebbe darvi buone prestazioni, senza dover fare il caching.

Altri suggerimenti

non ha descritto come si sta utilizzando LINQ to SQL con il repository. In sostanza, stai riutilizzando la stessa DataContext per tutti i repository creati durante una singola richiesta, o fa ogni repository ottiene una propria istanza DataContext? Se si tratta di quest'ultimo, si perde sul cachability interna del DataContext.

Un altro settore in cui le prestazioni possono essere migliorate è se avete domande frequentemente usati che contengono un sacco di strati di join (non solo una singola tabella selezionare). Utilizzando un CompiledQuery qui sarà accelerare le cose drasticamente . CompiledQueries devono solo essere generati la prima volta che vengono utilizzati, altrimenti ogni volta che viene utilizzato una query di ricompilati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top