ISOF (Entity SQL)
Determina si el tipo de una expresión es del tipo especificado o uno de sus subtipos.
Sintaxis
expression IS [ NOT ] OF ( [ ONLY ] type )
Argumentos
expression
Cualquier expresión de consulta válida de la que se va a determinar el tipo.
NOT Niega el resultado EDM.Boolean de IS OF.
ONLY Especifica que IS OF devuelve true
solo si expression
es de tipo type
y no de cualquiera de sus subtipos.
type
Tipo con el que se va a probar expression
. El tipo debe estar calificado por el espacio de nombres.
Valor devuelto
true
si expression
es de tipo T y T es un tipo base o un tipo derivado de type
; NULL si expression
es nulo en tiempo de ejecución; de lo contrario, false
.
Observaciones
Las expresiones expression IS NOT OF (type)
y expression IS NOT OF (ONLY type)
son sintácticamente equivalentes a NOT (expression IS OF (type))
y NOT (expression IS OF (ONLY type))
, respectivamente.
En la tabla siguiente se muestra el comportamiento del operador IS OF
en algunos patrones de esquina típicos. Todas las excepciones se producen en el cliente antes de que se llame al proveedor:
Patrón | Comportamiento |
---|---|
null IS OF (EntityType) | Produce |
null IS OF (ComplexType) | Produce |
null IS OF (RowType) | Produce |
TREAT (null AS EntityType) IS OF (EntityType) | Devuelve DBNull |
TREAT (null AS ComplexType) IS OF (ComplexType) | Produce |
TREAT (null AS RowType) IS OF (RowType) | Produce |
EntityType IS OF (EntityType) | Devuelve true o false |
ComplexType IS OF (ComplexType) | Produce |
RowType IS OF (RowType) | Produce |
Ejemplo
La consulta de Entity SQL siguiente usa el operador IS OF para determinar el tipo de una expresión de consulta y, a continuación, usa el operador TREAT para convertir un objeto del tipo Course en una colección de objetos del tipo OnsiteCourse. La consulta se basa en el modelo School.
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]