Update und Delete per Lambda-Ausdruck mit EF Plus 17.09.2018, 00:00 Uhr

Lambda statt SQL

Mit LINQ lassen sich SQL-Befehle robuster schreiben – mit EF Plus auch für DELETE und UPDATE.
Einigen Nutzern von Entity Framework (EF) und Entity Framework Core wird beim Lesen des obigen Satzes sofort die Frage in den Kopf kommen: Warum sollte ich überhaupt DELETE- oder UPDATE-Befehle selbst schreiben wollen? Das macht doch der objektrelationale Mapper für mich, wenn ich Objekte lösche oder ändere und dann SaveChanges() aufrufe. Es gibt darauf drei Antworten: Performance, Performance und Performance. Tabelle 1 zeigt die Ausführungsgeschwindigkeit für verschiedene Verfahren, um 1 000 Flug-Datensätze aus der Beispieldatenbank „World Wide Wings“ [1] zu löschen.
Tabelle 1: Löschverfahren mit EF Core 2.1 und SQL Server 2016
Löschen von 1 000 Flug-Datensätzen Datenbankanfragen Anzahl DELETE-Befehle Ausführungszeit
Ohne Batching mit EF-Core-API 1 001 1 000 43,637 Sekunden
Mit Batching mit EF-Core-API 2 1 000 4,392 Sekunden
Mit Batching mit EF-Core-API unter Einsatz von Pseudoobjekten 1 1 000 0,207 Sekunden
Mit SQL über EF-Kontext 1 1 0,072 Sekunden
Mit SQL über ADO.NET- Command-Objekt mit Parameter 1 1 0,040 Sekunden
Mit EF Plus 1 1 0,037 Sekunden
Tabelle 1: Löschverfahren mit EF Core 2.1 und SQL Server 2016
Löschen von 1 000 Flug-Datensätzen Datenbankanfragen Anzahl DELETE-Befehle Ausführungszeit
Ohne Batching mit EF-Core-API 1 001 1 000 43,637 Sekunden
Mit Batching mit EF-Core-API 2 1 000 4,392 Sekunden
Mit Batching mit EF-Core-API unter Einsatz von Pseudoobjekten 1 1 000 0,207 Sekunden
Mit SQL über EF-Kontext 1 1 0,072 Sekunden
Mit SQL über ADO.NET- Command-Objekt mit Parameter 1 1 0,040 Sekunden
Mit EF Plus 1 1 0,037 Sekunden

dotnetpro

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde
  • 2 Monate Gratis testen
  • Über 4.000 qualifizierte Fachartikel
  • Auf jedem Gerät verfügbar