モデル定義関数は、概念モデルで定義される関数です。 モデル定義関数の本体は Entity SQL で表されます。これにより、データ ソースでサポートされているルールや言語とは別に関数を表現できます。
モデル定義関数の定義には、次の情報が含まれています。
関数名です。 (必須)
戻り値の型。 (省略可能)
注
戻り値の型が指定されていない場合、戻り値は void です。
パラメーター情報。 (省略可能)
関数の本体を定義する Entity SQL 式。
モデル定義関数は出力パラメーターをサポートしないことに注意してください。 モデル定義関数を構成できるように、この制限が適用されます。
例
次の図は、 Book
、 Publisher
、 Author
の 3 種類のエンティティを持つ概念モデルを示しています。
ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL では、概念モデルで、(上の図の) Book
のインスタンスが発行されてからの年数を返す関数を定義します。
<Function Name="GetYearsInPrint" ReturnType="Edm.Int32" >
<Parameter Name="book" Type="BooksModel.Book" />
<DefiningExpression>
Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
</DefiningExpression>
</Function>