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)]