Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Compiled Queries: LINQ-Abfragen mit Pegasus-Stiefeln © msg systems ag, August 20121 Gordon Breuer IT Consultant & Software Engineer Travel & Logistics.

Ähnliche Präsentationen


Präsentation zum Thema: "Compiled Queries: LINQ-Abfragen mit Pegasus-Stiefeln © msg systems ag, August 20121 Gordon Breuer IT Consultant & Software Engineer Travel & Logistics."—  Präsentation transkript:

1 Compiled Queries: LINQ-Abfragen mit Pegasus-Stiefeln © msg systems ag, August 20121 Gordon Breuer IT Consultant & Software Engineer Travel & Logistics

2 © msg systems ag, August 20122 Compiled Queries Das Problem Die Theorie Demo! Die Inhalte

3 © msg systems ag, August 20123 Wo / Wie entsteht das Problem

4 © msg systems ag, August 20124 LINQ λ (Lambda) Expression- Tree SQL Wo und wie entsteht der Performance-Engpass? IEnumerable linq = from customer in db.Customer where customer.LastName.StartsWith("B") select customer; IQueryable lambda = db.Customer.Where(customer => customer.LastName.StartsWith("B")); Expression > bedingung = s => s.LastName.StartsWith("B"); IQueryable lambda = db.Customer.Where(bedingung); SELECT * FROM Customer WHERE LastName = 'B%'

5 © msg systems ag, August 20125 LINQ λ (Lambda) Expression- Tree SQL Wo und wie entsteht der Performance-Engpass? IEnumerable linq = from customer in db.Customer where customer.LastName.StartsWith("B") select customer; IQueryable lambda = db.Customer.Where(customer => customer.LastName.StartsWith("B")); Expression > bedingung = s => s.LastName.StartsWith("B"); IQueryable lambda = db.Customer.Where(bedingung); SELECT * FROM Customer WHERE LastName = 'B%'

6 © msg systems ag, August 20126 Compiled Queries als Lösung

7 © msg systems ag, August 20127 Verfügbar seit.NET 3.5 Namensraum System.Data.Linq Statische Klasse CompiledQuery Compile ( Expression >) Compiled Queries

8 © msg systems ag, August 20128 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 Compiled Queries

9 © msg systems ag, August 20129 Aufruf in instanziierten Klassen? Statischer Kontext! Instanzen vs. Statische Klassen

10 © msg systems ag, August 201210 Deutlicher Geschwindigkeitszuwachs bei oft aufgerufenen Abfragen Anfänglicher Overhead wirkt sich bei wenigen Aufrufen negativ auf die Performance aus. Höherer Speicherverbrauch durch Zwischenspeichern der Funktionen. Schlechtere Lesbarkeit des Quellcodes. Die Vorteile Die Nachteile Die Vor- und Nachteile im Überblick

11 © msg systems ag, August 201211 Alle Compiled Queries 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 Tipps zur Verwendung

12 © msg systems ag, August 201212 Demos in Visual Studio

13 www.msg-systems.com Vielen Dank für Ihre Aufmerksamkeit © msg systems ag, Mai 201213 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 msg systems ag 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 eure


Herunterladen ppt "Compiled Queries: LINQ-Abfragen mit Pegasus-Stiefeln © msg systems ag, August 20121 Gordon Breuer IT Consultant & Software Engineer Travel & Logistics."

Ähnliche Präsentationen


Google-Anzeigen