質問: id) .FirstOrDefaultAsync(); result.MyColumn -= 42; } //...more MyDbContext operations await MyDbContext.SaveChangesAsync(); //... } ``` `result`変数の宣言と減算操作が別のブロックで(そしてスコープが暗黙的に)行われたとしても、EFコアはデータベースへの問い合わせに成功し、それに応じてMyColumnフィールドを更新します(この場合42)。 これはEFがどのように動作するかの意図的で信頼性のある動作ですか?それを避けてブロック内に別の保存操作を追加する必要がありますか?
回答: これは意図した動作です。加えられた変更はすべてDbContextレベルで保存されます。 だからあなたが`result.MyColumn -= 42;`つまり、実際には基礎となるDbContextオブジェクトを更新しています。このオブジェクトはすべての変更を追跡し、DBの更新が必要かどうかを認識しています。