LINQ to SQL を使用する n 層アプリケーションとリモート アプリケーション

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 DataSet を使用する n 層アプリケーションについて詳しくは、「n 層アプリケーションでのデータセットの操作」をご覧ください。

関連項目