Requêtes asynchronesAsynchronous Queries

Les requêtes asynchrones évitent de bloquer un thread pendant que la requête est exécutée dans la base de données.Asynchronous queries avoid blocking a thread while the query is executed in the database. Cela peut être utile pour éviter le gel de l’interface utilisateur d’une application client lourde.This can be useful to avoid freezing the UI of a thick-client application. Les opérations asynchrones peuvent également augmenter le débit dans une application web, où le thread peut être libéré pour d’autres demandes de service lors de la fin de l’opération de base de données.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. Pour plus d’informations sur la programmation asynchrone, consultez Programmation asynchrone en C#.For more information, see Asynchronous Programming in C#.

Avertissement

EF Core ne prend pas en charge les opérations parallèles multiples en cours d’exécution sur la même instance de contexte.EF Core does not support multiple parallel operations being run on the same context instance. Vous devez toujours attendre qu’opération se termine avant de commencer l’opération suivante.You should always wait for an operation to complete before beginning the next operation. Cela est généralement effectué à l’aide du mot-clé await sur chaque opération asynchrone.This is typically done by using the await keyword on each asynchronous operation.

Entity Framework Core fournit un ensemble de méthodes d’extension asynchrone qui peuvent être utilisées comme alternative pour les méthodes LINQ qui provoquent l’exécution d’une requête et le retour de résultats.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. Par exemple, ToListAsync(), ToArrayAsync(), SingleAsync(), etc. Il n’existe pas de versions asynchrones des opérateurs LINQ comme Where(...), OrderBy(...), etc., car ces méthodes construisent uniquement l’arborescence de l’expression LINQ et n’entraînent pas l’exécution de la requête dans la base de données.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.

Important

Les méthodes d’extension EF Core asynchrones sont définies dans l’espace de noms Microsoft.EntityFrameworkCore.The EF Core async extension methods are defined in the Microsoft.EntityFrameworkCore namespace. Cet espace de noms doit être importé pour que les méthodes soient disponibles.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();
    }
}