FUNCTION (Entity SQL)
定義 Entity SQL 查詢命令範圍內的函式。
FUNCTION function-name
( [ { parameter_name <type_definition>
[ ,... n ]
]
) AS ( function_expression )
<type_definition>::=
{ data_type | COLLECTION ( <type_definition> )
| REF ( data_type )
| ROW ( row_expression )
}
Arguments
- function-name
函式的名稱。
- parameter-name
函式中的參數名稱。
- function_expression
有效的 Entity SQL 運算式是函式。 函式中的命令可以在傳遞至函式的 parameter_name 參數上作用。
- data_type
支援的型別名稱。
- COLLECTION ( <type_definition> )
傳回支援的型別集合、資料列集合或參考集合的運算式。
- REF ( data_type )
傳回實體類型之參考的運算式。
- ROW ( row_expression )
從一或多個值傳回匿名、結構式型別記錄的運算式。 如需詳細資訊,請參閱 ROW (Entity SQL)。
備註
只要函式簽章是不一樣的,含相同名稱的多個函式即可宣告為內嵌。 如需詳細資訊,請參閱函式多載解析。
內嵌函式必須先在 Entity SQL 命令中定義,才能在 Entity SQL 命令中呼叫。 不過,在定義呼叫的函式之前或之後,可在另一個內嵌函式中呼叫內嵌函式。 在下列範例中,在定義函式 B 之前,函式 A 呼叫函式 B:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
如需詳細資訊,請參閱 HOW TO:呼叫使用者定義函式 (Entity Framework)。
函式也可以在模型本身進行宣告。 在模型中宣告的函式,會與在命令中宣告為內嵌的函式一樣,以相同的方式執行。 如需詳細資訊,請參閱使用者定義函式 (Entity SQL)。
範例
以下 Entity SQL 命令定義函式 Products,使用整數值篩選傳回的產品。
USING Microsoft.Samples.Entity;
FUNCTION Products(listPrice Int32) AS
(
SELECT VALUE p FROM AdventureWorksEntities.Products AS p WHERE p.ListPrice >= listPrice
)
select p from Products(@price) as p
以下 Entity SQL 命令定義函式 StringReturnsCollection,使用字串集合篩選傳回的連絡人。
USING Microsoft.Samples.Entity;
FUNCTION GetSpecificContacts(Ids Collection(Int32)) AS
(
SELECT VALUE id FROM Ids AS id WHERE id < @price
)
GetSpecificContacts(SELECT VALUE c.ContactID FROM AdventureWorksEntities.Contacts as c)