方法: 概念モデルでカスタム関数を定義する (Entity Framework)
概念モデルでカスタム関数を定義するには、DefiningExpression 要素を含む Function 要素を .edmx ファイルの概念スキーマ定義言語 (CSDL) に追加します。 パラメーター化されたステートメントなど、CommandText 要素内の Entity SQL ステートメントを定義できます。
詳細については、「DefiningExpression (CSDL)」および「User-Defined Functions (Entity SQL)」を参照してください。
概念モデルでのカスタム関数の定義
次の手順は、Visual Studio の XML エディターで .edmx ファイルを開いていることを前提としています。 この手順は、ストレージ モデルでカスタム関数を追加する方法の概要をまとめたものです。 各手順の詳しい説明は、その後の例で示します。
概念モデルでカスタム関数を定義するには
Function 要素を .edmx ファイルの概念モデル コンテンツ セクションにある Schema 要素に追加します。
注 :
ReturnType 属性を使用して、関数の戻り値の型を指定する必要があります。 詳細については、「Function Element (SSDL)」、「Schema Element (SSDL)」、および「ReturnType (CSDL)」を参照してください。
関数が受け入れる各パラメーターについて、Parameter 要素を Function 要素に追加します。
注 :
関数パラメーターは、@ のようなプレフィックスでは設定されません。関数を定義する Entity SQL 式で名前によって直接参照されます。Entity SQL 式で使用する他の識別子とは異なるパラメーター名を選択してください。 詳細については、「Parameter Element (CSDL)」を参照してください。
DefiningExpression 要素を新しい Function 要素に追加します。
DefiningExpression 要素で Entity SQL ステートメントを定義します。
.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