質問: ここで複数の質問をOK: * 私は、EFコアのAddAsync()とAdd()メソッドの違い(明白な非同期外)について理解しようとしていますか? * いつ他のものを選ぶのですか? * 一貫性のために他のものを選択しても問題ありませんか?
回答: コードを調べた後、コードが非同期のときにAdd()を使用するのが最適化であるというHenk Holtermanのコメントに同意します。 AddAsync()のドキュメンテーションは、「他のすべての場合には非同期ではないメソッドを使用する必要がある」と言うと、少し紛らわしいです。 > EF CoreのAddAsync()メソッドとAdd()メソッドの違い(明らかな非同期の範囲外)を理解しようとしていますか? > > AddAsync()は100%非同期セーフですが、Add()は特定の状況でのみ非同期セーフです。コメントが示すように、列の1つは、Entity Frameworkがデータベースにクエリを実行して最終的に挿入される値を生成するように構成されている場合があります。その場合、Add()を呼び出すとブロッキングが発生します。 > いつどちらを選びますか? > > * もしあなたが非同期コードを書いていないのなら、間違いなくAdd()を使ってください。 * 非同期コードを書いていて、物事をシンプルにしたい場合は、他の方法と同じようにAddAsync()を選択してください。 * あなたが本当に非同期呼び出しのオーバーヘッドを避けたいと思っていて、Add()が決してデータベース問い合わせをしないことを知っているならば、Add()を使ってください。 > 一貫性を保つためにどちらを選択しても問題ありませんか。 > > いいえ、AddAsync()ドキュメントの推奨にもかかわらずです。