非同期保存Asynchronous Saving

非同期保存は、データベースへの変更の書き込み中にスレッドがブロックされることを回避します。Asynchronous saving avoids blocking a thread while the changes are written to the database. これは、シック クライアント アプリケーションの UI の凍結を防止するために役立つ場合があります。This can be useful to avoid freezing the UI of a thick-client application. また、非同期操作では、データベース操作が完了している間に、他の要求を処理するためにスレッドを解放できるので、Web アプリケーションでのスループットを向上させることができます。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. 詳細については、「C# での非同期プログラミング」を参照してください。For more information, see Asynchronous Programming in C#.

警告

EF Core は、同じコンテキスト インスタンス上での複数の並列操作の実行をサポートしていません。EF Core does not support multiple parallel operations being run on the same context instance. 次の操作を開始する前に、操作が完了するまで常に待機する必要があります。You should always wait for an operation to complete before beginning the next operation. これは通常、各同期操作において await キーワードを使用することで行われます。This is typically done by using the await keyword on each asynchronous operation.

Entity Framework Core では、DbContext.SaveChanges() に対する非同期の代替として DbContext.SaveChangesAsync()を提供しています。Entity Framework Core provides DbContext.SaveChangesAsync() as an asynchronous alternative to DbContext.SaveChanges().

public static async Task AddBlogAsync(string url)
{
    using (var context = new BloggingContext())
    {
        var blog = new Blog { Url = url };
        context.Blogs.Add(blog);
        await context.SaveChangesAsync();
    }
}