Asynchrone AbfragenAsynchronous Queries

Asynchrone Abfragen vermeiden, dass ein Thread blockiert wird, während die Abfrage in der Datenbank ausgeführt wird.Asynchronous queries avoid blocking a thread while the query is executed in the database. Dies hilft dabei, das Abstürzen der Benutzeroberfläche einer Thick-Client-Anwendung zu vermeiden.This can be useful to avoid freezing the UI of a thick-client application. Asynchrone Vorgänge können außerdem den Durchsatz in Webanwendungen erhöhen, in denen der Thread für andere Anforderungen freigegeben werden kann, während der Datenbankvorgang abgeschlossen wird.Asynchronous operations can also increase throughput in a web application, where the thread can be freed up to service other requests while the database operation completes. Weitere Informationen finden Sie unter Asynchrone Programmierung in C#.For more information, see Asynchronous Programming in C#.

Warnung

EF Core unterstützt nicht die Ausführung mehrerer paralleler Vorgänge, die auf derselben Kontextinstanz ausgeführt werden.EF Core does not support multiple parallel operations being run on the same context instance. Sie sollten immer auf den Abschluss eines Vorgangs warten, bevor Sie den nächsten starten.You should always wait for an operation to complete before beginning the next operation. In der Regel erfolgt dies für alle asynchronen Vorgänge durch das Schlüsselwort await.This is typically done by using the await keyword on each asynchronous operation.

Entity Framework Core stellt eine Reihe von asynchronen Erweiterungsmethoden bereit, die alternativ zu den LINQ-Methoden verwendet werden können, die die Ausführung einer Abfrage und die Rückgabe von Ergebnissen auslösen.Entity Framework Core provides a set of asynchronous extension methods that can be used as an alternative to the LINQ methods that cause a query to be executed and results returned. Beispiele dafür sind ToListAsync(), ToArrayAsync(), SingleAsync() usw. Es gibt nicht asynchrone Versionen von LINQ-Operatoren, z.B. Where(...), OrderBy(...) usw., da diese Methoden nur die LINQ-Ausdrucksbaumstruktur erstellen und nicht die Abfrage in der Datenbank auslösen.Examples include ToListAsync(), ToArrayAsync(), SingleAsync(), etc. There are not async versions of LINQ operators such as Where(...), OrderBy(...), etc. because these methods only build up the LINQ expression tree and do not cause the query to be executed in the database.

Wichtig

Die asynchronen Erweiterungsmethoden von EF Core werden im Namespace Microsoft.EntityFrameworkCore definiert.The EF Core async extension methods are defined in the Microsoft.EntityFrameworkCore namespace. Dieser Namespace muss importiert werden, damit die Methoden verfügbar sind.This namespace must be imported for the methods to be available.

public async Task<List<Blog>> GetBlogsAsync()
{
    using (var context = new BloggingContext())
    {
        return await context.Blogs.ToListAsync();
    }
}