MVC に関するプロジェクトがあります。DB トランザクションには EF を選択しました。BLL レイヤー用のマネージャーをいくつか作成しました。using
" " ステートメントが使用されている多くの例を見つけました。
public Item GetItem(long itemId)
{
using (var db = new MyEntities())
{
return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
}
}
ここでは、DBcontext の新しいインスタンスを作成しますMyEntities()
。「 IDisposable オブジェクトの正しい使用を保証する」ためusing
に、「 」を使用しています。
それは私のマネージャーの唯一の方法です。しかし、私はそれらの10以上を持っています。マネージャーからメソッドを呼び出すたびに、" using
" ステートメントを使用して、メモリ内に別の DBcontext を作成します。ガベージ コレクター (GC) はいつそれらを破棄しますか? 誰か知っていますか?
しかし、マネージャーのメソッドには別の使い方があります。グローバル変数を作成します。
private readonly MyEntities db = new MyEntities();
using
" "ステートメントなしですべてのメソッドでDBcontextを使用します。メソッドは次のようになります。
public Item GetItem(long itemId)
{
return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
}
質問:
- DBcontext 変数を使用する適切な方法は何ですか?
usage
" " ステートメントを使用しないとしたら(パフォーマンスに影響するため)、GC がすべてを行うのでしょうか?
私は EF の使用の「新人」ですが、この質問に対する明確な答えをまだ見つけていません。