Entity Framework Core - Performanzoptimierung

Session Abstract

Mit dem Entity Framework hat Microsoft vor Jahren einen Objekt-Relationalen-Mapper geschaffen, welcher sich in der .NET-Welt mittlerweile einer großen Beliebtheit erfreut. Der O/R-Mapper ermöglicht es, ohne SQL-Kenntnisse auf eine Datenbank sowohl lesend als auch schreibend zuzugreifen. Doch hier verbergen sich Risiken, denn ein O/R-Mapper erweckt den Eindruck, dass der Anwendungsentwickler sich nie wieder mit SQL zu befassen braucht - was für 80% der Abfragen in einer Anwendung auch stimmen mag. Die restlichen 20% können allerdings die gesamte Applikation durch sehr schlechte Antwortzeiten beinah unbenutzbar machen. Die unperformanten SQL-Abfragen sind jedoch nicht die einzige Quelle welche die Benutzbarkeit in Mitleidenschaft ziehen. Es spielt auch eine Rolle wie genau Entity Framework im Code verwendet wird. Nicht selten wird die Tatsache vergessen, dass die LINQ-Abfragen am Ende nicht im Arbeitsspeicher, sondern durch die Datenbank ausgeführt werden – mehr oder weniger „transparent“. In ersten Teil des Vortrags wird gezeigt auf was geachtet werden sollte, um die häufigsten Stolperfallen bei der Verwendung von Entity Framework Core zu vermeiden. Im zweiten Teil geht es darum, die generierten SQL-Abfragen zu verstehen, denn nur so kann das Problem erkannt und gelöst werden. Das wichtigste Mittel hierfür werden die Ausführungspläne sein.

Related Articles

entity framework core
Is "N+1 Queries" still a performance issue in Entity Framework Core 3?
In a previous post we saw that EF 2.1 is highly susceptible to the N+1 queries problem. After the release of a new version of Entity Framework Core (EF) the first question coming to mind is: "Is it still a big issue in EF 3.1?" And if the answer is no, is there anything else we…
Pawel Gerr
entity framework core
Entity Framework Core - Getting more Deadlock Information with named Transactions
Whether in an application in production or in integration tests on CI, the deadlocks are virtually unavoidable. The behavior of a deadlock depends on the database (MS SQL Server, MySQL, etc)  and the isolation level (like Snapshot Isolation). Some of the databases are blocking…
Pawel Gerr
entity framework core
Entity Framework Core - ROW_NUMBER Support
There are some use cases that force me to use raw T-SQL instead of using LINQ. One of them is the need for ROW_NUMBER. But not anymore... One again, due to great work of Entity Framework (EF) team we are able to add more capabilities to EF quite easily. At the moment there are…
Pawel Gerr
entity framework core
Entity Framework Core - Isolation of Integration Tests
When working with Entity Framework Core (EF) a lot of code can be tested using the In-Memory database provider but sometimes you want (or have) to go to the real database. For example, you are using not just LINQ but custom SQL statements due to performance reasons or you want to…
Pawel Gerr