Condividi tramite


ISOF (Entity SQL)

Determina se il tipo di un'espressione è del tipo specificato o di uno dei sottotipi.

Sintassi

expression IS [ NOT ] OF ( [ ONLY ] type )

Argomenti

expression Qualsiasi espressione di query valida di cui determinare il tipo.

NOT Nega il risultato EDM.Boolean di IS OF.

ONLY Specifica che IS OF restituisce true solo se expression è di tipo type e non di uno dei sottotipi.

type Tipo rispetto al quale testare expression. Il tipo deve essere qualificato dallo spazio dei nomi.

Valore restituito

true se expression è di tipo T e T è un tipo di base o un tipo derivato di type; null se expression è null in fase di esecuzione; in caso contrario, false.

Osservazioni:

Le espressioni expression IS NOT OF (type) e expression IS NOT OF (ONLY type) sono sintatticamente equivalenti rispettivamente a NOT (expression IS OF (type)) e NOT (expression IS OF (ONLY type)).

Nella tabella seguente viene illustrato il comportamento dell'operatore IS OF su alcuni modelli tipici e specifici. Tutte le eccezioni vengono generate sul lato client prima che il provider venga richiamato:

Modello Comportamento
null IS OF (EntityType) Genera un'eccezione
null IS OF (ComplexType) Genera un'eccezione
null IS OF (RowType) Genera un'eccezione
TREAT (null AS EntityType) IS OF (EntityType) Restituisce DBNull
TREAT (null AS ComplexType) IS OF (ComplexType) Genera un'eccezione
TREAT (null AS RowType) IS OF (RowType) Genera un'eccezione
EntityType IS OF (EntityType) Restituisce true/false
ComplexType IS OF (ComplexType) Genera un'eccezione
RowType IS OF (RowType) Genera un'eccezione

Esempio

Nella query Entity SQL seguente viene usato l'operatore IS OF per determinare il tipo di un'espressione di query, quindi viene usato l'operatore TREAT per convertire un oggetto del tipo Course in una raccolta di oggetti del tipo OnsiteCourse. La query è basata sul modello School.

[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]

Vedi anche