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");- Slide e demo della mia sessione ai Community Days online
- Prima beta pubblica per il SP1 del .NET Framework 3.5 e VS 2008
- LINQ To SQL ed un problema di null
- Annunciata la modalità di uscita di ADO.NET Entity Framework e dei Data Services
- June 2008 CTP per le Parallel Extensions
- #42 - Salvare un documento XML con LINQ
- #50 - Caricare immediatamente tutti i dati in una query con le LoadOptions di LINQ To SQL
- #48 - Eseguire query LINQ su liste non generiche con l'operatore Cast
- Una noisa limitazione di LINQ To SQL
- #19 - Definire la lingua degli elementi WPF
- #23 - Variare il layout di WPF in base alle performance del PC
- #62 - Eseguire comandi SQL dinamici con il metodo ExecuteCommand di LINQ To SQL
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
