ASP.net 3.5アプリケーションでLinqToSqlを完全に使用するには、DataContextclasses(通常はVS 2008のデザイナーを使用して作成されます)を作成する必要があります。 UIの観点から見ると、DataContextはLinqToSqlを通して公開したいデータベースのセクションの設計であり、LinqToSqlのORM機能の設定に不可欠です。複数のDataContextクラスはこれまでどおり適切ですか?
私の質問は:すべてのテーブルが外部キーを介して何らかの方法で相互接続されている大規模なデータベースを使用するプロジェクトをセットアップしています。私の最初の傾向は、データベース全体をモデル化する1つの巨大なDataContextクラスを作ることです。理論的にはそうすることができますが(実際にはこれが必要かどうかは分かりませんが)、LinqToSqlで生成された外部キー接続を使用して、コード内の関連オブジェクト間を簡単に移動したり、関連オブジェクトを挿入したりできます。
しかし、考えてみたら、データベース内の特定の名前空間または論理的に関連するセクションに関連する複数のDataContextクラスを作成する方が意味があると考えています。私の主な関心事は、データベースの特定の領域に関連する個々の操作のために常に1つの巨大なDataContextクラスをインスタンス化して処理することは、アプリケーションリソースに不必要な面倒を課してしまうことです。さらに、小さなDataContextファイルを作成して管理する方が、1つの大きなファイルよりも簡単です。私が失うのは、LinqToSqlを介してナビゲートすることができない、データベースのいくつかの遠い部分があるということです(たとえ関係のチェーンが実際のデータベースにそれらを結びつけても)。さらに、複数のDataContextに存在するいくつかのテーブルクラスが存在します。
1つの非常に大きなDataContextクラス(DB全体に対応)の代わりに(またはそれに加えて)複数のDataContext(DB名前空間に対応する)が適切であるかどうかについての考えや経験はありますか?
はい、大きなDCがインスタンス化に時間がかかると仮定するとOPが正しくありません。実際、実行中のプロセスで最初のインスタンスが作成された後、同じDCの後続のインスタンスがほぼ即座に作成されます。 –