DataContext メソッド (O/R デザイナ)
更新 : November 2007
DataContext メソッド (オブジェクト リレーショナル デザイナ (O/R デザイナ) のコンテキスト) は、データベース内のストアド プロシージャおよび関数を実行する DataContext クラスのメソッドです。
DataContext クラスは、SQL Server データベースと、そのデータベースにマップされる LINQ to SQL エンティティ クラスの間のパイプ役として機能する LINQ to SQL クラスです。DataContext クラスには、接続文字列の情報と、データベースへの接続およびデータベース内のデータの操作を行うメソッドが含まれています。既定では、DataContext クラスには、更新されたデータを LINQ to SQL クラスからデータベースに送信する SubmitChanges メソッドなど、呼び出すことのできるいくつかのメソッドがあります。また、ストアド プロシージャおよび関数にマップされる追加の DataContext メソッドを作成することもできます。つまり、これらのカスタム メソッドを呼び出すと、DataContext メソッドのマップ先となっているデータベース内のストアド プロシージャまたは関数が実行されます。メソッドを追加して任意のクラスを拡張するのと同じように、DataContext クラスに新しいメソッドを追加できます。ただし、O/R デザイナのコンテキストにおける DataContext メソッドの説明では、ストアド プロシージャおよび関数にマップされる DataContext メソッドを説明の対象としています。
メモ : |
---|
LINQ to SQL では、ストアド プロシージャと関数は同じ方法で処理され、両方とも同じ StoredProcedureAttribute を使用してエンティティ クラスにマップされます。LINQ to SQL のコンテキストでは、ストアド プロシージャにマップされる DataContext メソッドは、関数にマップされるメソッドと同じです。 |
メソッド ペイン
ストアド プロシージャおよび関数にマップされる DataContext メソッドは、O/R デザイナのメソッド ペインに表示されます。メソッド ペインは、エンティティ ペイン (メインのデザイン サーフェイス) の横に表示されているペインです。メソッド ペインには、O/R デザイナを使用して作成されたすべての DataContext メソッドが表示されます。既定ではメソッド ペインは空です。DataContext メソッドを作成し、メソッド ペインにデータを設定するには、サーバー エクスプローラまたはデータベース エクスプローラから、ストアド プロシージャまたは関数を O/R デザイナにドラッグします。詳細については、「方法 : ストアド プロシージャや関数にマップされる DataContext メソッドを作成する (O/R デザイナ)」を参照してください。
メモ : |
---|
メソッド ペインを開いたり閉じたりするには、O/R デザイナを右クリックし、[メソッド ペインの非表示] または [メソッド ペインの表示] をクリックするか、Ctrl + 1 のショートカット キーを使用します。 |
2 種類の DataContext メソッド
DataContext メソッドは、データベース内のストアド プロシージャおよび関数にマップされるメソッドです。DataContext メソッドは、O/R デザイナのメソッド ペインで作成および追加できます。DataContext メソッドには、1 つ以上の結果セットを返すものと結果セットを返さないものの 2 種類があります。
1 つ以上の結果セットを返す DataContext メソッド
この種類の DataContext メソッドは、アプリケーションでデータベース内のストアド プロシージャおよび関数を実行し、結果を返すことだけが必要な場合に作成します。詳細については、「方法 : ストアド プロシージャや関数にマップされる DataContext メソッドを作成する (O/R デザイナ)」、「[T:System.Data.Linq.ISingleResult'1]」、および「IMultipleResults」を参照してください。
結果セットを返さない DataContext メソッド (特定のエンティティ クラスの挿入、更新、削除など)
この種類の DataContext メソッドは、エンティティ クラスとデータベース間で変更されたデータを保存するために、既定の LINQ to SQL の動作を使用するのではなく、アプリケーションでストアド プロシージャを実行する必要がある場合に作成します。詳細については、「方法 : 更新、挿入、および削除を実行するストアド プロシージャを割り当てる (O/R デザイナ)」を参照してください。
DataContext メソッドの戻り値の型
サーバー エクスプローラまたはデータベース エクスプローラから O/R デザイナにストアド プロシージャまたは関数をドラッグする場合、生成される DataContext メソッドの戻り値の型は、項目をドロップする場所によって異なります。既存のエンティティ クラスに項目を直接ドロップすると、そのエンティティ クラスを戻り値の型とする DataContext メソッドが作成されます。O/R デザイナの空の領域 (任意のペイン) に項目をドロップすると、自動生成された型を返す DataContext メソッドが作成されます。作成される自動生成の型は、ストアド プロシージャ名または関数名に一致する名前と、そのストアド プロシージャまたは関数によって返される各フィールドにマップされるプロパティを持ちます。
メモ : |
---|
DataContext メソッドをメソッド ペインに追加した後に、その戻り値の型を変更できます。DataContext メソッドの戻り値の型を確認または変更するには、[プロパティ] ウィンドウでメソッドを選択し、[Return Type] プロパティを調べます。詳細については、「方法 : DataContext メソッドの戻り値の型を変更する (O/R デザイナ)」を参照してください。 |
データベースから O/R デザイナ画面にドラッグしたオブジェクトには、データベース内のオブジェクトの名前に基づいて自動的に名前が付けられます。同じオブジェクトを複数回ドラッグすると、新しい名前の末尾に名前を区別する番号が付けられます。データベース オブジェクト名にスペースや Visual Basic または C# でサポートされない文字が含まれている場合、そのスペースまたは無効な文字はアンダースコアに置き換えられます。
参照
処理手順
方法 : ストアド プロシージャや関数にマップされる DataContext メソッドを作成する (O/R デザイナ)
方法 : 更新、挿入、および削除を実行するストアド プロシージャを割り当てる (O/R デザイナ)
チュートリアル : エンティティ クラスの挿入、更新、および削除の動作のカスタマイズ
チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナ)