Ottimizzare le performance di una query LINQ To SQL

di , in LINQ,

Ogni volta che viene eseguita una query usando LINQ To SQL, viene creato l'Expression Tree che attualmente è un'operazione abbastanza lenta. Per ottimizzare le prestazioni, la soluzione migliore è mettere in cache l'expressione tree così che LINQ possa sempre recuperarlo.

Per compilare una query LINQ bisogna utilizzare il metodo Compile della classe System.Data.Linq.CompiledQuery passando in input un'oggetto Func con i parametri da passare alla metodo a cui punta. Mettendo il risultato del metodo Compile in una variabile statica permette di mantenere in memoria la query compilata.

private static Func<NWDataContext, string, IQueryable<Customer>> CustomerById = CompiledQuery.Compile((NWDataContext db, string customerId) => (from c in db.Customers where c.CustomerID == customerId select c));

In questo script si passa in input il DataContext e l'id del cliente e si riceve in output il risultato della query.

Per utilizzare il dato statico basta richiamare la funzione rappresentata dalla variabile statica:

var r = CustomersByCity(new NWDataContext(), "ALFKI");
var c = CustomersByCity(new NWDataContext(), "IEFKR");

Commenti

Visualizza/aggiungi commenti

Ottimizzare le performance di una query LINQ To SQL (#52)
| Condividi su: Twitter, Facebook, LinkedIn, Google+

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi