1つのコンテキストで多くのエンティティを追跡することをお勧めします。同じコンテキストですべてのエンティティを追跡できるため、結合クエリを使用して外部キー関係を持つエンティティを更新する場合に役立ちます。また、流暢なAPIを使用して、DBContextメソッド「OnModelCreating」でエンティティを構成することもできます。コンテキストにすべてが含まれていない場合、エンティティの関係を構成することは困難になります。異なるコンテキストでエンティティをグループ化すると、最終的にコードのメンテナンスに影響します。モデルをクリーンで将来にわたって利用できるようにエンティティを構成するための流暢なAPIの方法が好きです。
DBContextには、オーバーライドできるDisposeメソッドがあります。私たちはそれをより有効に活用することができます。DBContextに加えて、データベースコンテキストをどこから呼び出すかを作成しますが、これはまったく問題ありません。それが私たちが望んでいることですよね?着信要求は、DBContext(データベースコンテキスト)を作成し、データベースにクエリを実行し、モデルをフェッチしてからビューにデータを入力するスレッドとして送信され、ユーザーに返されます。
重要なことは、DBContextの「using」ステートメントを使用することです。これは、スコープがusing中括弧から外れた後、コンテキストを即座に破棄します。これを行うと、リクエストのライフサイクルを通じてコンテキストが生きるのに問題はありません。
using (MyDbContext dbCtx = new MyDbContext())
{
//fetch the model
}
//here the context is disposed.