TREAT(Entity SQL)
특정 기본 형식의 개체를 지정된 파생 형식의 개체로 처리합니다.
구문
TREAT ( expression as type)
인수
expression
엔터티를 반환하는 모든 유효한 쿼리 식입니다.
참고 항목
지정된 식의 형식이 지정된 데이터 형식의 하위 형식이어야 하거나, 데이터 형식이 식 형식의 하위 형식이어야 합니다.
type
엔터티 형식입니다. 형식은 네임스페이스로 한정되어야 합니다.
참고 항목
지정된 식이 지정된 데이터 형식의 하위 형식이어야 하거나, 데이터 형식이 식의 하위 형식이어야 합니다.
Return Value
지정된 데이터 형식의 값입니다.
설명
TREAT는 관련 클래스 간에 업캐스팅을 수행하는 데 사용됩니다. 예를 들어, Employee
가 Person
에서 파생되고 p가 Person
형식인 경우 TREAT(p AS NamespaceName.Employee)
는 일반 Person
인스턴스를 Employee
로 업캐스팅합니다. 다시 말해서, p를 Employee
로 취급할 수 있게 됩니다.
TREAT는 다음과 같이 쿼리할 수 있는 상속 시나리오에서 사용됩니다.
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
이 쿼리는 Person
엔터티를 Employee
형식으로 업캐스팅합니다. p의 값이 실제로 Employee
형식이 아닌 경우 식의 값은 null
입니다.
참고 항목
지정된 식 Employee
가 지정된 데이터 형식 Person
의 하위 형식이어야 하거나, 데이터 형식이 식의 하위 형식이어야 합니다. 그렇지 않으면 식에서 컴파일 시간 오류가 발생합니다.
다음 표에서는 일반 패턴 및 비교적 특수한 패턴에 대한 TREAT의 동작을 보여 줍니다. 공급자 호출 이전에 모든 예외가 클라이언트 측에서 throw됩니다.
패턴 | 동작 |
---|---|
TREAT (null AS EntityType) |
DbNull 을(를) 반환합니다. |
TREAT (null AS ComplexType) |
예외를 throw합니다. |
TREAT (null AS RowType) |
예외를 throw합니다. |
TREAT (EntityType AS EntityType) |
EntityType 또는 null 을 반환합니다. |
TREAT (ComplexType AS ComplexType) |
예외를 throw합니다. |
TREAT (RowType AS RowType) |
예외를 throw합니다. |
예시
다음 Entity SQL 쿼리는 TREAT 연산자를 사용하여 Course 형식의 개체를 OnsiteCourse 형식의 개체 컬렉션으로 변환합니다. 쿼리는 School 모델을 기반으로 합니다.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)