DbContext
トランザクションごとに新規作成することの違いは何ですか:
using (var context = new MyDbContext()) { /* transaction */ }
アプリケーション全体で1つを使用する
var context = MyDbContext.Singleton;
*/ transaction */
DbContext
トランザクションごとに新規作成することの違いは何ですか:
using (var context = new MyDbContext()) { /* transaction */ }
アプリケーション全体で1つを使用する
var context = MyDbContext.Singleton;
*/ transaction */
1つ(最初)は正しい方法です。
もう一つは間違ったやり方です。
Entity Framework は、有効期間が短いコンテキストを持つように設計されています。実行時にメモリ管理やクリーンアップを行わず、メモリが存在する限り、メモリを増やして使用し続けます。使用後は廃棄するように設計されています。2 番目の方法で使用すると、コードが壊れます。
Web アプリを開発している場合は、さらに悪化します。2 番目の方法では、コンテキストがすべてのユーザー間で共有されるため、データが破損する可能性があり、複数のユーザーが同時にハンマーを打とうとすると状態が破損します。