ISOF (Entity SQL)
Určuje, zda je typ výrazu zadaný typ nebo jeden z jeho podtypů.
Syntaxe
expression IS [ NOT ] OF ( [ ONLY ] type )
Argumenty
expression
Libovolný platný výraz dotazu, který určuje typ dotazu.
NEguje EDM. Logický výsledek IS OF.
Pouze určuje, že FUNKCE IS OF vrátí true
pouze v případě expression
, že je typu type
, a ne jeden z jeho podtypů.
type
Typ, který se má testovat expression
. Typ musí být kvalifikovaný obor názvů.
Návratová hodnota
true
pokud expression
je typu T a T buď základní typ, nebo odvozený type
typ ; null pokud expression
je null v době běhu; jinak . false
Poznámky
Výrazy expression IS NOT OF (type)
a expression IS NOT OF (ONLY type)
jsou syntakticky ekvivalentní NOT (expression IS OF (type))
a NOT (expression IS OF (ONLY type))
v uvedeném pořadí.
Následující tabulka ukazuje chování operátoru u některých typických IS OF
a rohových vzorů. Všechny výjimky jsou vyvolány ze strany klienta před vyvolání zprostředkovatele:
Vzor | Chování |
---|---|
Null IS OF (EntityType) | Vyvolá |
Null IS OF (ComplexType) | Vyvolá |
null IS OF (RowType) | Vyvolá |
TREAT (null AS EntityType) IS OF (EntityType) | Vrátí hodnotu DBNull. |
TREAT (null AS ComplexType) IS OF (ComplexType) | Vyvolá |
TREAT (null AS RowType) IS OF (RowType) | Vyvolá |
EntityType IS OF (EntityType) | Vrátí hodnotu true/false. |
ComplexType IS OF (ComplexType) | Vyvolá |
Typ řádku JE OF (Typ řádku) | Vyvolá |
Příklad
Následující dotaz Entity SQL používá operátor IS OF k určení typu výrazu dotazu a pak pomocí operátoru TREAT převede objekt typu Course na kolekci objektů typu OnsiteCourse. Dotaz je založený na školním modelu.
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]