다음을 통해 공유


리소스 경로 규칙 및 의미 체계(ADO.NET 데이터 서비스 프레임워크)

이 문서에서는 ADO.NET 데이터 서비스의 리소스 경로 규칙 및 의미 체계를 사용하여 생성할 수 있는 다양한 경로에 대해 설명하고, 리소스 경로의 특정 요소에만 적용되는 제한 사항도 소개합니다.

규칙

리소스 경로 내의 모든 세그먼트에 적용되는 규칙은 다음과 같습니다.

  • 엔터티 집합이 기본 엔터티 컨테이너에 없으면 /ServiceName/<EntityContainer>/<EntitySet> 구문을 사용하여 주소를 지정해야 합니다. 세그먼트가 모여 만들어진 경로가 경로의 첫 번째 집합과 동일한 컨테이너에 있는 엔터티 집합을 나타내는 경우, 해당 집합 앞에 컨테이너 이름을 지정하지 않아도 됩니다.

  • 복합 키 조건자에서는 키의 순서가 매우 중요합니다. 클라이언트는 데이터 서비스의 CSDL(개념 스키마 정의 언어) 설명에 키 값이 표시된 순서에 따라 복합 키에서 키 값을 구성해야 합니다. 자세한 내용은 개념 스키마(CSDL)를 참조하십시오.

  • /$links/<segment> 뒤에는 추가 경로 세그먼트가 나올 수 없습니다. 예를 들어 http://host/service.svc/Person(1)/$links/BestFriend에서 'BestFriend' 뒤에 경로 세그먼트가 나올 수 없습니다. 추가 경로 세그먼트가 있으면 400 잘못된 요청 응답이 반환됩니다.

  • $filter처럼 $로 시작하는 쿼리 옵션은 $links를 사용하여 링크 주소를 지정하는 URI에 대한 요청에서 사용할 수 없습니다. 이러한 쿼리 옵션이 있으면 400 잘못된 요청 응답이 반환됩니다. 참고: $로 시작하지 않는 비 ADO.NET 쿼리 옵션은 유효합니다.

  • 다음 구문을 사용하는 모든 경우에 링크 속성으로 탐색 속성을 대체할 수 있습니다.

  • 다음 구문을 사용하는 모든 경우에 경로 세그먼트에서 처음 나오는 엔터티 집합으로 서비스 작업을 대체할 수 있습니다.

의미 체계

아래에 나오는 일련의 URI 구문 유형은 ADO.NET 데이터 서비스의 기본 URI 집합에 대한 의미 체계를 보여 줍니다. 여기에 나오는 기본 구문을 결합하여 긴 URI를 만들 수 있습니다. 각 URI 예제에는 해당되는 LINQ 구문이 함께 제공됩니다.

URI: serviceName/<entity set>

이 구문은 지정된 엔터티 집합 내에 있는 특정 엔터티 형식의 모든 인스턴스를 나타냅니다. 집합에 0개, 1개 또는 그보다 많은 엔터티 형식 인스턴스가 있을 수 있습니다.

예제:

이 예제에서는 Customers 엔터티 집합에 있는 모든 고객을 가져옵니다.

https://www.contoso.com/dataservice.svc/Customers

해당되는 LINQ 구문:

from c in Customers 
select c

URI: serviceName/<entity set>(keyPredicate)

이 구문은 키가 키 조건자와 같고 지정된 엔터티 집합에 있는 엔터티 형식 인스턴스를 나타냅니다.

예제:

이 예제에서는 ALFKI라는 키로 식별되는 고객을 가져옵니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')

해당되는 LINQ 구문:

(from c in Customers
where c.keyProperty == "ALFKI"
select c).First()

URI: serviceName/<entity set>(keyPredicate)/<Complex Type>

이 구문은 키가 키 조건자와 같고 지정된 엔터티 집합에 있는 지정된 엔터티 형식의 복합 형식 인스턴스를 나타냅니다.

예제:

이 예제에서는 Customers 엔터티 집합에 있고 ALFKI라는 키로 식별되는 고객의 주소를 가져옵니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')/Address

해당되는 LINQ 구문:

(from c in Customers
where c.keyProperty == "ALFKI"
select c.ComplexType).First()

URI: ServiceName/<entity set>(KeyPredicate)/<Complex Type>/<Property>

이 구문은 키가 키 조건자와 같고 지정된 엔터티 집합에 있는 엔터티 형식 인스턴스 내의 복합 형식의 속성을 나타냅니다.

속성으로 끝나는 URI의 경우 끝에 /$value 세그먼트를 추가할 수 있습니다. $value 세그먼트는 역참조 연산자 역할을 하며 추가 메타데이터나 앞뒤의 구문 없이 속성 값만 반환되어야 함을 나타냅니다.

예제:

이 예제에서는 Customers 엔터티 집합에 있고 ALFKI라는 키로 식별되는 고객의 주소를 가져옵니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')/Address/Name

이 예제는 앞뒤의 메타데이터 없이 속성 값을 나타낸다는 점을 제외하고는 앞의 예제와 같습니다. 예를 들어 .jpg 이미지를 지정하는 URI의 경우 URI를 SRC 특성 값으로 IMG HTML 태그에 직접 포함할 수 있습니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')/Address/Name/$value

해당되는 LINQ 구문:

(from c in Customers
where c.keyProperty == "ALFKI"
select c.ComplexType.Property).First()

URI: serviceName/<entity set>(KeyPredicate)/<Property>

이 구문은 키가 키 조건자와 같고 지정된 엔터티 집합에 있는 엔터티 형식의 속성을 나타냅니다.

속성으로 끝나는 URI의 경우 끝에 /$value 세그먼트를 추가할 수 있습니다. $value 세그먼트는 역참조 연산자 역할을 하며 추가 메타데이터나 앞뒤의 구문 없이 속성 값만 반환되어야 함을 나타냅니다.

예제:

이 예제에서는 Customers 엔터티 집합에 있고 ALFKI라는 키로 식별되는 고객의 이름을 가져옵니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')/CustomerName

이 예제는 앞뒤의 메타데이터 없이 속성 값을 나타낸다는 점을 제외하고는 앞의 예제와 같습니다. 예를 들어 .jpg 이미지를 지정하는 URI의 경우 URI를 SRC 특성 값으로 IMG HTML 태그에 직접 포함할 수 있습니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')/CustomerName/$value

해당되는 LINQ 구문:

(from c in Customers
where c.keyProperty == "ALFKI"
select c.Property).First()

URI: serviceName/<entity set>(KeyPredicate)/<NavigationProperty>

이 구문은 0개부터 여러 개에 이르는 일련의 엔터티 형식을 포함하는 엔터티 집합을 나타냅니다. 엔터티 집합에는 앞의 경로 세그먼트에 있는 엔터티 형식 인스턴스와 관련된 인스턴스만 포함됩니다.

예제:

이 예제에서는 ALFKI라는 키로 식별되는 CustomerOrders를 가져옵니다.

https://www.contoso.com/dataservice.svc/Customers('ALFKI')/Orders

해당되는 LINQ 구문:

from c in Customers
from c2 in c.RelatedEntitySet 
where c.keyProperty == "ALFKI"
select c2

대체 LINQ 구문:

Db.Customers.Where(c => p.keyProperty.Equals("ALFKI")).SelectMany(c => c.RelatedEntitySet);

참고 항목

개념

공통적인 HTTP 요구 사항(ADO.NET 데이터 서비스 프레임워크)