次の方法で共有


方法: ストレージ モデルでカスタム関数を定義する (Entity Framework)

ストレージ モデルでカスタム関数を定義するには、CommandText 要素を含む Function 要素を .edmx ファイルのストレージ スキーマ定義言語 (SSDL) に追加します。 通常、CommandText 要素は、ストアド プロシージャとよく似た機能を提供するために使用されますが、データベースではなく .edmx ファイルでストアド プロシージャが定義されます。 パラメーター化されたステートメントなど、CommandText 要素内の SQL ステートメントを定義できます。

Dd296754.note(ja-jp,VS.100).gif注 :
以下の手順に従って .edmx ファイルの SSDL セクションに加えた変更は、モデルの更新ウィザードを使用してモデルを更新すると上書きされます。

ストレージ モデルでのカスタム関数の定義

次の手順は、Visual Studio の XML エディターで .edmx ファイルを開いていることを前提としています。 この手順は、ストレージ モデルでカスタム関数を追加する方法の概要をまとめたものです。 各手順の詳しい説明は、その後の例で示します。

ストレージ モデルでカスタム関数を定義するには

  1. Function 要素を .edmx ファイルのストレージ モデル コンテンツ セクションにある Schema 要素に追加します。

    詳細については、「Function Element (SSDL)」および「Schema Element (SSDL)」を参照してください。

  2. CommandText 要素を新しい Function 要素に追加します。

  3. CommandText 要素で SQL ステートメントを定義します。

    ステートメントにはパラメーター化ステートメントを使用できます。

  4. SQL クエリの各パラメーターについて、Parameter 要素を Function 要素に追加します。 各 Parameter 要素の Name 属性、Mode 属性、および Type 属性を設定します。

  5. .edmx ファイルを保存して閉じます。

  6. ADO.NET Entity Data Model デザイナー (エンティティ デザイナー) で .edmx ファイルを開きます。

    新しく追加された関数は、[モデル ブラウザー] ウィンドウでストアド プロシージャとして表示されます。

  7. ストアド プロシージャの FunctionImport を作成します。 詳細については、「方法: ストアド プロシージャをインポートする (Entity Data Model ツール)」を参照してください。

以下は、Function 要素の例です。これを .edmx ファイルのストレージ モデル コンテンツ セクションで Schema 要素に追加してカスタム関数を定義します。 この Function 要素を School モデルに追加すると、指定されたインストラクターのオフィスの割り当てを更新する機能が加わります。 School モデルの例については、「Quickstart (Entity Framework)」を参照してください。

<Function Name="UpdateOfficeAssignment" IsComposable="false">
  <CommandText>
    UPDATE OfficeAssignment
    SET Location = @location
    WHERE InstructorID = @id;
  </CommandText>
  <Parameter Name="location"
             Mode="In"
             Type="nvarchar"/>
  <Parameter Name="id"
             Mode="In"
             Type="int"/>
</Function>

ObjectContext で関数を使用できるようにするには、概念モデル内の対応する関数インポートを作成する必要があります。 詳細については、「方法: ストアド プロシージャをインポートする (Entity Data Model ツール)」を参照してください。

参照

処理手順

方法: 定義クエリを追加する (Entity Framework)

概念

ADO.NET Entity Data Model デザイナー

その他のリソース

.edmx ファイルの手動編集 (Entity Framework)
ADO.NET Entity Data Model ツール