NAVIGATE(Entity SQL)
엔터티 사이에 설정된 관계를 탐색합니다.
navigate(instance-expresssion, [relationship-type], [to-end [, from-end] ])
인수
- instance-expresssion
엔터티의 인스턴스입니다.
- relationship-type
CSDL(개념 스키마 정의 언어) 파일에 지정된, 관계의 형식 이름입니다. relationship-type은 <namespace>.<relationship type name>으로 정규화됩니다.
- to
관계의 끝 부분입니다.
- from
관계의 시작 부분입니다.
반환 값
끝 End의 카디널리티가 1인 경우 반환 값은 **Ref<T>**이고, 끝 End의 카디널리티가 n인 경우 반환 값은 **Collection<Ref<T>>**입니다.
설명
관계는 EDM(엔터티 데이터 모델 )에서 기본 클래스 구문입니다. 둘 이상의 엔터티 형식 간에 관계를 설정할 수 있으며 사용자는 한쪽(엔터티)에서 다른 쪽으로 관계를 탐색할 수 있습니다. from 및 to는 관계 내의 이름 확인에 모호성이 없는 경우에 한해 조건부로 사용 가능합니다.
NAVIGATE는 O 및 C 공간에서 유효합니다.
탐색 구문의 일반적인 형태는 다음과 같습니다.
navigate(instance-expresssion, relationship-type, [ to-end [, from-end ] ] )
예를 들면 다음과 같습니다.
Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o
여기서 OrderCustomer는 relationship이고, Customer와 Order는 각각 관계의 to-end(고객)와 from-end(주문)입니다. OrderCustomer가 n:1 관계라면 탐색 식의 결과 형식은 Ref<Customer>입니다.
이 식이 좀 더 단순화된 형태는 다음과 같습니다.
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
위와 비슷하게 다음 형태의 쿼리에서 탐색 식은 Collection<Ref<Order>>를 생성합니다.
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
인스턴스 식은 엔터티/참조 형식이어야 합니다.
예제
다음 Entity SQL 쿼리는 NAVIGATE 연산자를 사용하여 Address 및 SalesOrderHeader 엔터티 형식 사이에 설정된 관계를 탐색합니다. 쿼리는 AdventureWorks Sales 모델을 기반으로 합니다. 이 쿼리를 컴파일하고 실행하려면 다음 단계를 수행하십시오.
방법: StructuralType 결과를 반환하는 쿼리 실행(EntityClient)의 절차를 수행합니다.
다음 쿼리를
ExecuteStructuralTypeQuery
메서드에 인수로 전달합니다.
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS soh)
FROM AdventureWorksEntities.Addresses AS address