TREAT(Entity SQL)
특정 기본 형식의 개체를 지정된 파생 형식의 개체로 처리합니다.
TREAT ( expression as type)
인수
expression
엔터티를 반환하는 모든 유효한 쿼리 식입니다.참고
지정된 식의 형식이 지정된 데이터 형식의 하위 형식이어야 하거나, 데이터 형식이 식 형식의 하위 형식이어야 합니다.
type
엔터티 형식입니다. 형식은 네임스페이스로 한정되어야 합니다.참고
지정된 식이 지정된 데이터 형식의 하위 형식이어야 하거나, 데이터 형식이 식의 하위 형식이어야 합니다.
반환 값
지정된 데이터 형식의 값입니다.
설명
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입니다.
![]() |
---|
지정된 식 |
다음 표에서는 일반 패턴 및 비교적 특수한 패턴에 대한 TREAT의 동작을 보여 줍니다. 공급자 호출 이전에 모든 예외가 클라이언트 측에서 throw됩니다.
패턴 | 동작 |
---|---|
|
DbNull을 반환합니다. |
|
예외를 throw합니다. |
|
예외를 throw합니다. |
|
EntityType 또는 null을 반환합니다. |
|
예외를 throw합니다. |
|
예외를 throw합니다. |
예제
다음 Entity SQL 쿼리는 TREAT 연산자를 사용하여 People 형식의 개체를 Student 형식 개체의 컬렉션으로 변환합니다. 쿼리는 School 엔터티 데이터 모델을 기반으로 합니다. 이 모델 생성 방법에 대한 자세한 내용은 School 엔터티 데이터 모델 생성(Entity Framework 퀵 스타트)을 참조하십시오.
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
이 예제의 결과는 다음과 같습니다.
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
참고 항목
개념
형식 연산자(Entity SQL)
Entity SQL 참조
구조적 Nullable 형식(Entity SQL)