다음을 통해 공유


서비스 작업 매개 변수(ADO.NET 데이터 서비스 프레임워크)

데이터 서비스는 ADO.NET 데이터 서비스 프레임워크에서 지원하는 서비스 작업을 통해 다른 모든 ADO.NET 데이터 서비스 리소스처럼 URI로 식별되는 메서드를 서버에 노출할 수 있습니다. 매개 변수는 URI 쿼리 문자열을 사용하여 서비스 작업 메서드에 전달됩니다.

서비스 작업은 System.Data.Services.DataService 클래스를 상속하며 데이터 서비스 자체를 나타내는 클래스에 메서드를 추가하는 방법으로 만듭니다.

다음 코드에서는 지정된 도시의 모든 고객을 계산하는 서비스 작업을 만듭니다. this.CurrentDataSource에 대한 참조를 통해 데이터베이스 세션에 액세스할 수 있습니다.

public class Northwind : DataService<NorthwindEntities>
{
    [WebGet]
    public IQueryable<Customer> CustomersByCity(string city)
    {
        if (string.IsNullOrEmpty(city))
        {
            throw new ArgumentNullException("city",
                                   "You must provide a city name argument");
        }

        return this.CurrentDataSource.Customers.Where("it.City = @city",
                                  new ObjectParameter("city", city));
    }
}

서비스 작업을 호출하려면 URI 형식을 메서드 인수에 직접 매핑되는 쿼리 문자열 매개 변수와 함께 사용합니다. 예를 들면 http://host/northwind.svc/CustomersByCity?city=London과 같이 지정합니다.

위의 서비스 작업 예제에서는 호출자가 요청한 데이터를 직접 반환하지 않습니다. 대신 서비스 작업이 IQueryable<T> 형식의 쿼리 개체를 반환합니다. **IQueryable<T>**는 .NET Framework v3.5 SP1의 LINK(Language Integrated Query) 기능을 통해 지원됩니다. ADO.NET 데이터 서비스 프레임워크는 데이터 대신 쿼리를 반환함으로써 필터링, 정렬, 페이징 등의 옵션을 제공할 수 있습니다. 예를 들어 http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName 쿼리는 정렬 옵션과 함께 쿼리를 구성하여 CompanyName을 기준으로 정렬된 결과를 반환합니다.

추가 연산자를 구성할 수 없도록 서비스 작업을 제한하려면 쿼리 개체 대신 작업의 결과를 반환하십시오. 위의 예제에서 메서드가 결과를 반환하지 않을 경우에는 메서드의 반환 형식이 IEnumerable<T> 또는 void여야 합니다.

참고 항목

개념

ADO.NET 데이터 서비스 쿼리 옵션
ADO.NET 데이터 서비스 시스템 쿼리 옵션

관련 자료

엔터티 데이터 모델