O/R デザイナーの概要
オブジェクト リレーショナル デザイナー (O/R デザイナー) は、データベース内のオブジェクトに基づく LINQ to SQL エンティティ クラスと関連付け (リレーションシップ) を作成するためのビジュアル デザイン サーフェイスを提供します。 つまり、O/R デザイナーは、データベース内のオブジェクトにマップされるオブジェクト モデルをアプリケーションに作成するために使用されます。 また、エンティティ クラスとデータベース間でデータを送受信するために使用する、厳密に型指定された DataContext も生成します。 O/R デザイナーは、データを返し、エンティティ クラスを設定するために、ストアド プロシージャと関数を DataContext のメソッドにマップする機能も提供します。 最後に、O/R デザイナーでは、エンティティ クラス間の継承関係をデザインすることもできます。
O/R デザイナーは、LINQ to SQL クラスとデータベース オブジェクト間のマッピングを提供する .dbml ファイルを生成します。 O/R デザイナーは、型指定された DataContext とエンティティ クラスも生成します。
O/R デザイナーには、デザイン サーフェイスに 2 つの領域があります。左側がエンティティ ペインで、右側がメソッド ペインです。 エンティティ ペインは、エンティティ クラス、関連付け、および継承階層を表示するメインのデザイン サーフェイスです。 メソッド ペインは、ストアド プロシージャと関数にマッピングされる DataContext のメソッドを表示するデザイン サーフェイスです。
注意
現在、O/R デザイナーでは、SQL Server 2000、SQL Server 2005、SQL Server 2008、および SQL Server Express のデータベースのみがサポートされています。 O/R デザイナーは SQL Server Compact 3.5 をサポートしていませんが、LINQ to SQL はサポートしています。 詳細については、「SQL Server Compact 3.5 および LINQ to SQL」を参照してください。SQL Server Express の入手方法については、「方法 : サンプル データベースをインストールする」の「SQL Server Express の入手」を参照してください。
O/R デザイナーを開く
O/R デザイナーを開くには、新しい [LINQ to SQL クラス] 項目をプロジェクトに追加します。 詳細については、「方法 : プロジェクトに LINQ to SQL クラスを追加する (O/R デザイナー)」を参照してください。
重要
O/R デザイナーは、1:1 のマッピング関係のみをサポートする単純なオブジェクト リレーショナル マッパーです。 つまり、エンティティ クラスには、データベース テーブルまたはビューとの 1:1 のマッピング関係しか持たせることができません。 現在、結合テーブルへのエンティティ クラスのマッピングなどの複雑なマッピングはサポートされていません。また、デザイナーは一方向のコード ジェネレーターです。 つまり、デザイナー サーフェイスに加えた変更だけがコード ファイルに反映されます。 コード ファイルに手動で加えた変更は、O/R デザイナーに反映されません。コード ファイルに手動で加えた変更は、デザイナーを保存してコードを再生成するときに上書きされます。 ユーザー コードの追加および O/R デザイナーで生成されるクラスの拡張方法の詳細については、「方法 : O/R デザイナーで生成されたコードを拡張する」を参照してください。
DataContext の作成と構成
プロジェクトに LINQ to SQL クラス項目を追加し、O/R デザイナーを開いた後、空のデザイン サーフェイスは、構成の準備ができた空の DataContext を表します。 DataContext は、デザイン サーフェイスにドラッグされた最初の項目から提供される接続情報で構成されます。 したがって、DataContext は、デザイン サーフェイスにドロップされた最初の項目の接続情報によって構成されます。 DataContext クラスの詳細については、「DataContext メソッド (O/R デザイナー)」を参照してください。
データベース テーブルおよびビューにマップされるエンティティ クラスの作成
テーブルやビューにマッピングされたエンティティ クラスを作成するには、データベース テーブルやビューを [サーバー エクスプローラー] または [データベース エクスプローラー] から O/R デザイナーにドラッグします。前のセクションで示したように、DataContext は、デザイン サーフェイスにドラッグされる最初の項目が提供する接続情報で構成されます。 別の接続を使用する項目が後で O/R デザイナーに追加された場合は、DataContext の接続を変更できます。 詳細については、「方法 : テーブルとビューにマップされた LINQ to SQL クラスを作成する (O/R デザイナー)」を参照してください。
ストアド プロシージャおよび関数を呼び出す DataContext メソッドの作成
サーバー エクスプローラーまたはデータベース エクスプローラーから、ストアド プロシージャまたは関数を O/R デザイナーにドラッグすると、それらを呼び出す (それらにマップされる) DataContext のメソッドを作成できます。 ストアド プロシージャと関数は、O/R デザイナーに DataContext のメソッドとして追加されます。
注意
サーバー エクスプローラーまたはデータベース エクスプローラーから O/R デザイナーにストアド プロシージャや関数をドラッグする場合、生成される DataContext メソッドの戻り値の型は、項目をドロップする場所によって異なります。 詳細については、「DataContext メソッド (O/R デザイナー)」を参照してください。
ストアド プロシージャを使用してエンティティ クラスとデータベース間でデータを保存するための DataContext の構成
前に述べたように、ストアド プロシージャと関数を呼び出す DataContext のメソッドを作成できます。 また、挿入、更新、および削除を実行する既定の LINQ to SQL ランタイムの動作の代わりに使用できる、ストアド プロシージャを割り当てることもできます。 詳細については、「方法 : 更新、挿入、および削除を実行するストアド プロシージャを割り当てる (O/R デザイナー)」を参照してください。
継承と O/R デザイナー
LINQ to SQL クラスは、他のオブジェクトと同様に、継承を使用して他のクラスから派生できます。 データベースでは、継承関係が複数の方法で作成されます。 O/R デザイナーでは、多くのリレーショナル システムに実装されている単一テーブル継承の概念がサポートされています。 詳細については、「方法 : O/R デザイナーを使用して継承を構成する」を参照してください。
LINQ to SQL クエリ
O/R デザイナーで作成されるエンティティ クラスは、統合言語クエリ (LINQ: Language-Integrated Query) で使用するようにデザインされています。 詳細については、「方法 : クエリで情報を取得する (LINQ to SQL)」を参照してください。
生成された DataContext とエンティティ クラス コードの異なる名前空間への分離
O/R デザイナーは、DataContext に Context Namespace プロパティと Entity Namespace プロパティを提供します。 これらのプロパティは、DataContext およびエンティティ クラスのコードが生成される名前空間を決定します。 既定では、これらのプロパティは空であり、DataContext およびエンティティ クラスはアプリケーションの名前空間に生成されます。 アプリケーションの名前空間以外の名前空間にコードを生成するには、Context Namespace プロパティ、Entity Namespace プロパティ、またはその両方に値を入力します。
参照
処理手順
チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナー)
方法 : 更新、挿入、および削除を実行するストアド プロシージャを割り当てる (O/R デザイナー)