ISOF (Entity SQL)
Określa, czy typ wyrażenia ma określony typ, czy jeden z jego podtypów.
Składnia
expression IS [ NOT ] OF ( [ ONLY ] type )
Argumenty
expression
Dowolne prawidłowe wyrażenie zapytania w celu określenia typu.
NIE neguje EDM. Wynik logiczny IS OF.
Określa tylko, że funkcja IS OF zwraca true
tylko wtedy, gdy expression
jest typu type
, a nie żadnego z jego podtypów.
type
Typ do przetestowania expression
. Typ musi być kwalifikowany w przestrzeni nazw.
Wartość zwracana
true
jeśli expression
jest typu T i T jest typem podstawowym lub typem pochodnym type
; null, jeśli expression
ma wartość null w czasie wykonywania; w przeciwnym razie false
.
Uwagi
Wyrażenia expression IS NOT OF (type)
i są składniowo równoważne odpowiednio i NOT (expression IS OF (type))
NOT (expression IS OF (ONLY type))
.expression IS NOT OF (ONLY type)
W poniższej tabeli przedstawiono zachowanie IS OF
operatora w niektórych typowych i narożnych wzorcach. Wszystkie wyjątki są zgłaszane po stronie klienta przed wywołaniem dostawcy:
Wzorzec | Zachowanie |
---|---|
null IS OF (EntityType) | Zgłasza |
null IS OF (ComplexType) | Zgłasza |
null IS OF (RowType) | Zgłasza |
TREAT (null AS EntityType) IS OF (EntityType) (EntityType) | Zwraca wartość DBNull |
TREAT (null AS ComplexType) IS OF (ComplexType) IS (ComplexType) | Zgłasza |
TREAT (null AS RowType) IS OF (RowType) (TYP WIERSZA) | Zgłasza |
EntityType IS OF (EntityType) | Zwraca wartość true/false |
ComplexType IS OF (ComplexType) | Zgłasza |
Typ wiersza JEST OF (Typ wiersza) | Zgłasza |
Przykład
Następujące zapytanie Entity SQL używa operatora IS OF do określenia typu wyrażenia zapytania, a następnie używa operatora TREAT do konwertowania obiektu typu Course na kolekcję obiektów typu OnsiteCourse. Zapytanie jest oparte na modelu szkolnym.
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]