どのようにdbcontext.SaveChanges()に困惑しています。ドキュメントに基づいて、SaveChanges()はデータベースに加えられたすべての変更を保存する必要があります。。複数の非同期関数中の.Net EFコアDbContext.Save()
私は、それらがすべて異なるテーブルを対象とする複数の非同期関数を持っている場合を考えてみましょう。それらのすべてが新しいエントリを作成しようとするが、他のものより時間がかかる場合(計算処理などによる)、dbcontext.SaveChanges()に到達する最初の関数は、それらの関数がSaveChangesの部分に達しても、 ?
私の心配は、複数のAsync関数中に、別の関数がSaveChanges()を呼び出したという理由だけで、BusinessFlowの前にデータが保存されるということです。
この場合、または非同期ごとに内部トランザクションスコープを作成しますか? Startup.csがここhttps://github.com/drakoumel/DatacircleAPI/blob/master/Startup.cs
複数のスレッドから同じdbContextインスタンスを使用していて、複数のSaveChangesを並列に実行している場合は、そのようにしないでください。複数のスレッドから同じコンテキストを使用しないでください。並列操作ごとに個別のコンテキストを作成してください。 – Evk
私は起動時にdbcontextを作成するweb APIを持っています。コントローラアクションが呼び出されるたびに同じ接続であるかどうかわかりません。 – Drakoumel
私たちにあなたのコードを教えてください。特に、DbContextの注入/使用方法。私は@ Evkに同意した。 DBConextを適切な方法で注入している場合は、問題はありません。トランザクションはDbContextの各インスタンスで自動的に作成されるため、スレッドごとに新しいインスタンスを作成することが重要です。実際には、各スレッドにDBContextを挿入すると完了します。 –