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)

另請參閱

概念

Entity SQL 參考
Entity SQL 語言