FUNCTION (Entity SQL)
Definiert eine Funktion im Bereich eines Entity SQL-Abfragebefehls.
FUNCTION function-name
( [ { parameter_name <type_definition>
[ ,... n ]
]
) AS ( function_expression )
<type_definition>::=
{ data_type | COLLECTION ( <type_definition> )
| REF ( data_type )
| ROW ( row_expression )
}
Argumente
- function-name
Der Name der Funktion.
- parameter-name
Der Name eines Parameters in der Funktion.
- function_expression
Ein gültiger Entity SQL-Ausdruck, der die Funktion darstellt. Der Befehl in der Funktion kann auf parameter_name-Parameter, die an die Funktion übergeben wurden, angewendet werden.
- data_type
Der Name eines unterstützten Typs.
- COLLECTION ( <type_definition*>* )
Ein Ausdruck, der eine Auflistung von unterstützten Typen, Zeilen oder Verweisen zurückgibt.
- REF ( data_type )
Ein Ausdruck, der einen Verweis auf einen Entitätstyp zurückgibt.
- ROW ( row_expression )
Ein Ausdruck, der anonyme strukturell eingegebene Datensätze von mindestens einem Wert zurückgibt. Weitere Informationen finden Sie unter ROW (Entity SQL).
Hinweise
Mehrere Funktionen mit dem gleichen Namen können inline deklariert werden, sofern sie unterschiedliche Funktionssignaturen aufweisen. Weitere Informationen finden Sie unter Auflösung von Funktionsüberladungen (Entity SQL).
Eine Inlinefunktion kann nur in einem Entity SQL-Befehl aufgerufen werden, nachdem sie in diesem Befehl definiert wurde. Eine Inlinefunktion kann jedoch in einer anderen Inlinefunktion aufgerufen werden, bevor oder nachdem die aufgerufene Funktion definiert wurde. Im folgenden Beispiel wird Funktion B von Funktion A aufgerufen, bevor Funktion B definiert wird:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
Weitere Informationen finden Sie unter Gewusst wie: Aufrufen einer benutzerdefinierten Funktion (Entity Framework).
Funktionen können auch im Modell selbst deklariert werden. Im Modell deklarierte Funktionen werden auf die gleiche Weise ausgeführt wie Funktionen, die inline im Befehl deklariert wurden. Weitere Informationen finden Sie unter Benutzerdefinierte Funktionen (Entity SQL).
Beispiel
Der folgende Entity SQL-Befehl definiert eine Products-Funktion, die die zurückgegebenen Produkte anhand eines ganzzahligen Werts filtert.
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
Der folgende Entity SQL-Befehl definiert eine StringReturnsCollection-Funktion, die anhand einer Auflistung von Zeichenfolgen die zurückgegebenen Kontakte filtert.
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)