IS [NOT] OF (Entity SQL)
Determina se il tipo di un'espressione è del tipo specificato o di uno dei sottotipi.
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 runtime; in caso contrario, false.
Osservazioni
Le espressioniexpression IS NOT OF (type)
eexpression IS NOT OF (ONLY type)
sono sintatticamente equivalenti aNOT (expression IS OF (type))
e NOT (expression IS OF (ONLY type))
, rispettivamente.
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 utilizzato l'operatore IS OF per determinare il tipo di un'espressione di query, quindi viene utilizzato l'operatore TREAT per convertire un oggetto del tipo Course in una raccolta di oggetti del tipo OnsiteCourse. La query è basata sul Modello School.
SELECT VALUE TREAT (course as SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses as course
WHERE course IS OF( SchoolModel.OnsiteCourse)