130 likes | 243 Vues
Learn how to optimize LINQ queries and overcome performance bottlenecks with CompiledQueries. Dive into .NET frameworks, static classes, and best practices for efficient data retrieval. Contact Gordon Breuer for expert IT consulting.
E N D
CompiledQueries: LINQ-Abfragen mit Pegasus-Stiefeln Gordon Breuer IT Consultant & Software Engineer Travel & Logistics
Wo und wie entsteht der Performance-Engpass? • IEnumerable<Customer> linq = fromcustomerindb.Customer • wherecustomer.LastName.StartsWith("B") • selectcustomer; IQueryable<Customer> lambda = db.Customer.Where(customer => customer.LastName.StartsWith("B")); Magic Expression<Func<Customer, bool>> bedingung = s => s.LastName.StartsWith("B"); IQueryable<Customer> lambda = db.Customer.Where(bedingung); SELECT * FROM Customer WHERE LastName = 'B%'
Wo und wie entsteht der Performance-Engpass? • IEnumerable<Customer> linq = fromcustomerindb.Customer • wherecustomer.LastName.StartsWith("B") • selectcustomer; IQueryable<Customer> lambda = db.Customer.Where(customer => customer.LastName.StartsWith("B")); Expression<Func<Customer, bool>> bedingung = s => s.LastName.StartsWith("B"); IQueryable<Customer> lambda = db.Customer.Where(bedingung); SELECT * FROM Customer WHERE LastName = 'B%'
CompiledQueries • Verfügbar seit .NET 3.5 • Namensraum System.Data.Linq • Statische Klasse CompiledQuery • Compile<TArg0, …, TResult>(Expression<Func<TArg0, …, TResult>>)
CompiledQueries • 1. Parameter = Objekt-Kontext für den Datenzugriff • Letzter Parameter (n) = Rückgabewert • 2. - (n-1). Parameter = Optionale Übergabeparameter • In .NET 3.5 und Silverlight: Überladungen für bis zu drei Übergabeparameter • In .NET 4.0+: Überladungen für bis zu 15 Übergabeparameter • Sollten mehr gebraucht werden: Helferklasse
Instanzen vs. Statische Klassen • Aufruf in instanziierten Klassen? • Statischer Kontext!
Tipps zur Verwendung • Alle CompiledQueries in einer eigenen statischen Klasse sammeln • Es muss immer der gleiche Data-Kontext verwendet werden • Das zurückgegebene one-time Enumerable in eine Liste umwandeln
eure msgsystemsag Robert-Bürkle-Straße 1 85737 Ismaning/München Telefon: +49 89 96101-0 Fax: +49 89 96101-1113 info@msg-systems.com www.msg-systems.com Gordon Breuer IT Consultant // Software Engineer Telefon: +49 160 9091 5143 E-Mail: gordon.breuer@msg-systems.de Twitter: @anheledir Facebook: http://facebook.com/gordon.breuer Blog: http://gordon-breuer.de