Aracılığıyla paylaş


FUNCTION (Entity SQL)

Entity SQL sorgu komutu kapsamında bir işlev tanımlar.

Söz dizimi

FUNCTION function-name  
( [ { parameter_name <type_definition>
        [ ,...n ]  
  ]  
) AS ( function_expression )
  
<type_definition>::=  
    { data_type | COLLECTION ( <type_definition> )
                | REF ( data_type )
                | ROW ( row_expression )
        }

Bağımsız değişkenler

function-name
İşlevin adı.

parameter-name
İşlevdeki parametrenin adı.

function_expression
İşlev olan geçerli bir Entity SQL ifadesi. İşlevdeki komut, işleve geçirilen parametreler üzerinde parameter_name işlem yapabilir.

data_type
Desteklenen bir türün adı.

COLLECTION ( <type_definition> )
Desteklenen türlerden, satırlardan veya başvurulardan oluşan bir koleksiyon döndüren ifade.

BAŞV (data_type)
Varlık türüne başvuru döndüren ifade.

SATIR (row_expression)
Bir veya daha fazla değerden anonim, yapısal olarak yazılan kayıtlar döndüren ifade. Daha fazla bilgi için bkz . SATIR.

Açıklamalar

İşlev imzaları farklı olduğu sürece aynı ada sahip birden çok işlev satır içinde bildirilebilir. Daha fazla bilgi için bkz . İşlev Aşırı Yükleme Çözümlemesi.

Satır içi bir işlev, entity SQL komutunda ancak bu komutta tanımlandıktan sonra çağrılabilir. Ancak, bir satır içi işlev, çağrılan işlev tanımlanmadan önce veya sonra başka bir satır içi işlevin içinde çağrılabilir. Aşağıdaki örnekte, B işlevi tanımlanmadan önce A işlevi B işlevini çağırır:

Function A() as ('A calls B. ' + B())

Function B() as ('B was called.')

A()

Daha fazla bilgi için bkz . Nasıl yapılır: Kullanıcı Tanımlı İşlev Çağırma.

İşlevler modelin kendisinde de bildirilebilir. Modelde bildirilen işlevler, komutta satır içinde bildirilen işlevlerle aynı şekilde yürütülür. Daha fazla bilgi için bkz . Kullanıcı Tanımlı İşlevler.

Örnek 1

Aşağıdaki Entity SQL komutu, döndürülen ürünleri filtrelemek için tamsayı değeri alan bir işlev Products tanımlar.

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

Örnek 2

Aşağıdaki Entity SQL komutu, döndürülen kişileri filtrelemek için bir dize koleksiyonu alan bir işlevi StringReturnsCollection tanımlar.

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)

Ayrıca bkz.