Zapytania asynchroniczneAsynchronous Queries

Zapytania asynchroniczne uniknąć blokowania wątku podczas wykonywania zapytania w bazie danych.Asynchronous queries avoid blocking a thread while the query is executed in the database. Może to być przydatne w celu uniknięcia zawiesza się interfejs użytkownika aplikacji klienckiej grubości.This can be useful to avoid freezing the UI of a thick-client application. Operacje asynchroniczne także może zwiększyć przepływność w aplikacji sieci web, w którym wątku można zwolnić, do obsługi innych żądań podczas kończenia operacji bazy danych.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. Aby uzyskać więcej informacji, zobacz asynchronicznego programowania w języku C#.For more information, see Asynchronous Programming in C#.

Ostrzeżenie

EF Core nie obsługuje wielu operacji równoległych, które są uruchamiane na tym samym wystąpieniu kontekstu.EF Core does not support multiple parallel operations being run on the same context instance. Należy zawsze poczekaj na zakończenie operacji przed rozpoczęciem następnej operacji.You should always wait for an operation to complete before beginning the next operation. Zazwyczaj jest to wykonywane przy użyciu await słowo kluczowe w każdej operacji asynchronicznej.This is typically done by using the await keyword on each asynchronous operation.

Entity Framework Core udostępnia zestaw metod asynchronicznego rozszerzenia, które mogą być używane jako alternatywę dla metody LINQ, które powodują zapytanie do wykonania i zwracania wyników.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. Przykłady obejmują ToListAsync(), ToArrayAsync(), SingleAsync()itp. Brak wersji asynchronicznej operatorów LINQ takich jak Where(...), OrderBy(...), itp., ponieważ te metody tylko zbudowania drzewa wyrażeń LINQ i nie powodują zapytanie do wykonania w bazie danych.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.

Ważne

Metody rozszerzenia programu EF Core asynchroniczne są zdefiniowane w Microsoft.EntityFrameworkCore przestrzeni nazw.The EF Core async extension methods are defined in the Microsoft.EntityFrameworkCore namespace. Ta przestrzeń nazw, należy zaimportować dla metod, które mają być dostępne.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();
    }
}