LINQ to SQL を使用する n 層または多層アプリケーションを作成できます。 通常、LINQ to SQL データ コンテキスト、エンティティ クラス、クエリ構築ロジックは、データ アクセス 層 (DAL) として中間層に配置されます。 ビジネス ロジックと非永続的なデータは、エンティティとデータ コンテキストの部分クラスとメソッドに完全に実装することも、個別のクラスに実装することもできます。
クライアント層またはプレゼンテーション 層は中間層のリモート インターフェイスでメソッドを呼び出し、その層の DAL は、 DataContext メソッドにマップされたクエリまたはストアド プロシージャを実行します。 中間層は、通常、エンティティまたはプロキシ オブジェクトの XML 表現としてデータをクライアントに返します。
中間層では、エンティティはデータ コンテキストによって作成され、その状態を追跡し、データベースからの遅延読み込みとデータベースへの変更の送信を管理します。 これらのエンティティは、 DataContext
に "アタッチ" されます。 ただし、エンティティがシリアル化によって別の層に送信されると、エンティティはデタッチされます。つまり、 DataContext
は状態を追跡しなくなります。 LINQ to SQL がデータベースに変更を送信するには、クライアントが更新のために送り返すエンティティをデータ コンテキストに再アタッチする必要があります。 クライアントは、元の値やタイムスタンプを、オプティミスティック コンカレンシー チェックに必要な場合に中間層に返す役割を担います。
ASP.NET アプリケーションでは、 LinqDataSource がこの複雑さの大部分を管理します。 詳細については、「 LinqDataSource Web サーバー コントロールの概要」を参照してください。
その他のリソース
LINQ to SQL を使用する n 層アプリケーションを実装する方法の詳細については、次のトピックを参照してください。
ADO.NET DataSets を使用する n 層アプリケーションの詳細については、「 n 層アプリケーションでのデータセットの操作」を参照してください。