다음을 통해 공유


연습: 도메인 서비스에서 데이터 검색 및 표시

이 항목에서는 액세스할 도메인 서비스 쿼리 메서드에 해당하는 Silverlight 응용 프로그램의 도메인 컨텍스트에 대해 메서드를 호출하는 방법과 해당 쿼리의 결과에 추가 필터를 적용하여 반환되거나 표시되는 엔터티를 제한하는 방법에 대해 설명합니다.

Silverlight 응용 프로그램에서 데이터를 검색하려면 사용할 도메인 서비스 쿼리 메서드에 해당하는 도메인 컨텍스트에 대해 메서드를 호출합니다. 예를 들어 도메인 서비스에 있는 GetProducts라는 쿼리 메서드의 경우 도메인 컨텍스트에 GetProductsQuery라는 해당하는 메서드가 있습니다. Silverlight 응용 프로그램에서 GetProductsQuery를 호출하면 이 메서드가 EntityQuery 개체를 반환합니다.

Silverlight 응용 프로그램에서 쿼리에 추가 필터를 적용하여 반환되는 엔터티를 제한할 수 있습니다. 쿼리 메서드가 제품 테이블에서 모든 레코드를 반환할 수 있지만 가격 값이 100보다 작은 제품만 표시하려고 할 수 있습니다. LINQ 및 LINQ 쿼리 연산자의 하위 집합을 사용하여 쿼리에서 반환된 결과를 수정할 수 있습니다. 사용 가능한 쿼리 연산자는 다음과 같습니다.

  • Where

  • OrderBy

  • ThenBy

  • Skip

  • Take

추가 필터를 적용한 후 EntityQuery 개체를 Load 메서드의 매개 변수로 전달하여 쿼리를 실행하고 결과를 가져옵니다.

쿼리에 IsComposable 속성이 false로 설정된 QueryAttribute가 있는 경우 쿼리에 추가 필터를 적용할 수 없습니다. 일반적으로 단일 엔터티를 반환하는 쿼리에서만 IsComposablefalse로 설정됩니다.

데이터를 표시하는 Silverlight 컨트롤에 데이터를 바인딩할 수 있습니다. DataGrid 컨트롤은 표 형식으로 데이터를 표시할 수 있습니다.

이 연습에서는 도메인 서비스의 데이터를 검색하고 표시하는 방법에 대해 설명합니다. 또한 사용 가능한 쿼리 연산자를 사용하여 쿼리에 추가 필터를 적용하는 방법도 보여 줍니다.

필수 구성 요소

WCF RIA Services 설명서에서 제공하는 이 연습 및 다른 연습을 실행하려면 WCF RIA Services 및 WCF RIA Services 도구 키트 외에도 Visual Studio 2010, Silverlight Developer 런타임 및 SDK 등의 몇 가지 필수 구성 요소 프로그램을 올바르게 설치하고 구성해야 합니다. 또한 SQL Server 2008 R2 Express with Advanced Services를 설치하고 구성해야 하며 AdventureWorks OLTP 및 LT 데이터베이스를 설치해야 합니다.

이러한 각 사전 요구 사항을 충족하기 위한 자세한 지침은 WCF RIA Services의 사전 요구 사항 노드의 항목에서 제공합니다. 이 RIA Services 연습을 수행할 때 발생할 수 있는 문제를 최소화하려면 이 연습을 진행하기 전에 여기서 제공하는 지침을 따르십시오.

이 연습은 사용자가 연습: RIA Services 솔루션 만들기를 완료했다고 가정하며 해당 연습에서 설명한 절차로 만든 응용 프로그램을 바탕으로 합니다.

도메인 서비스의 데이터를 검색하고 표시하려면

  1. 연습: RIA Services 솔루션 만들기 항목에서 간략하게 설명하는 지침을 완료하여 얻은 RIAServicesExample 솔루션을 엽니다.

  2. Silverlight 응용 프로그램에서 MainPage.xaml에 대한 코드 숨김 페이지를 엽니다.

  3. GetCustomersQuery 메서드를 호출하여 EntityQuery 인스턴스를 만듭니다.

  4. 사용 가능한 쿼리 작업을 사용하여 고객을 필터링합니다.

  5. 쿼리 개체를 Load 메서드에 전달하고 반환 값을 LoadOperation에 할당합니다.

    다음 코드에서는 도메인 서비스에서 고객을 검색하는 방법을 보여 줍니다. 이 코드에서는 전화 번호가 583으로 시작하는 고객을 필터링하고 LastName을 기준으로 사전순으로 정렬합니다. DataGrid에 결과가 표시됩니다.

    Partial Public Class MainPage
        Inherits UserControl
    
        Private _customerContext As New CustomerDomainContext
    
        Public Sub New()
            InitializeComponent()
    
            Dim query As EntityQuery(Of Customer)
    
            query = _
                From c In Me._customerContext.GetCustomersQuery() _
                Where c.Phone.StartsWith("583") _
                Order By c.LastName
    
            Dim loadOp = Me._customerContext.Load(query)
            CustomerGrid.ItemsSource = loadOp.Entities
        End Sub
    
    End Class
    
    public partial class MainPage : UserControl
    {
        private CustomerDomainContext _customerContext = new CustomerDomainContext();
    
        public MainPage()
        {
            InitializeComponent();
            EntityQuery<Customer> query = 
                from c in _customerContext.GetCustomersQuery()
                where c.Phone.StartsWith("583")
                orderby c.LastName
                select c;
            LoadOperation<Customer> loadOp = this._customerContext.Load(query);
            CustomerGrid.ItemsSource = loadOp.Entities;
        }
    }
    

참고 항목

작업

연습: RIA Services 솔루션 만들기
연습: 쿼리 메서드 추가