O/R デザイナの概要

更新 : November 2007

オブジェクト リレーショナル デザイナ (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 のメソッドを表示するデザイン サーフェイスです。

Bb384511.alert_note(ja-jp,VS.90).gifメモ :

現在、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 デザイナ)」を参照してください。

Bb384511.alert_caution(ja-jp,VS.90).gif重要 :

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 のメソッドとして追加されます。

Bb384511.alert_note(ja-jp,VS.90).gifメモ :

サーバー エクスプローラまたはデータベース エクスプローラから 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 デザイナ)

概念

データの新機能

参照

LINQ の一般的なプログラミング ガイド

その他の技術情報

LINQ to SQL

LINQ to ADO.NET

オブジェクト リレーショナル デザイナ (O/R デザイナ)