方法: 概念モデルでカスタム関数を定義する (Entity Framework)

概念モデルでカスタム関数を定義するには、DefiningExpression 要素を含む Function 要素を .edmx ファイルの概念スキーマ定義言語 (CSDL) に追加します。 パラメーター化されたステートメントなど、CommandText 要素内の Entity SQL ステートメントを定義できます。

詳細については、「DefiningExpression (CSDL)」および「User-Defined Functions (Entity SQL)」を参照してください。

概念モデルでのカスタム関数の定義

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

概念モデルでカスタム関数を定義するには

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

    Dd456812.note(ja-jp,VS.100).gif注 :
    ReturnType 属性を使用して、関数の戻り値の型を指定する必要があります。

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

  2. 関数が受け入れる各パラメーターについて、Parameter 要素を Function 要素に追加します。

    Dd456812.note(ja-jp,VS.100).gif注 :
    関数パラメーターは、@ のようなプレフィックスでは設定されません。関数を定義する Entity SQL 式で名前によって直接参照されます。Entity SQL 式で使用する他の識別子とは異なるパラメーター名を選択してください。

    詳細については、「Parameter Element (CSDL)」を参照してください。

  3. DefiningExpression 要素を新しい Function 要素に追加します。

  4. DefiningExpression 要素で Entity SQL ステートメントを定義します。

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

以下は、Function 要素の例です。これを .edmx ファイルの概念モデル コンテンツ セクションで Schema 要素に追加してカスタム関数を定義します。 この Function 要素を School モデルに追加すると、教員が雇用されてからの年数を特定する機能が加わります。

School モデルの例については、「Creating the School Sample Database」および「Generating the School Entity Data Model」を参照してください。

<Function Name="YearsSince" ReturnType="Edm.Int32">
  <Parameter Name="date" Type="Edm.DateTime" />
  <DefiningExpression>
    Year(CurrentDateTime()) - Year(date)
  </DefiningExpression>
</Function>

概念モデルで関数を定義した後、アプリケーションの Entity SQL クエリ内から呼び出すことができます。 LINQ to Entities クエリからの関数の呼び出しについては、「How to: Call Functions Defined in the Conceptual Model」を参照してください。

参照

処理手順

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

概念

ADO.NET Entity Data Model デザイナー

その他のリソース

.edmx ファイルの手動編集 (Entity Framework)
ADO.NET Entity Data Model ツール
Calling Functions in LINQ to Entities