다음을 통해 공유


연습: Silverlight 비즈니스 응용 프로그램에서 관련 데이터 표시

이 연습에서는 AdventureWorks 샘플 데이터베이스에 있는 두 개의 관련 테이블의 데이터를 표시하는 Silverlight 비즈니스 응용 프로그램을 만듭니다.

이 연습에서는 다음 작업을 수행합니다.

  • Silverlight 클라이언트와 ASP.NET 웹 응용 프로그램이라는 두 가지 프로젝트로 구성된 Silverlight 비즈니스 응용 프로그램 만들기

  • 리소스 문자열을 수정하여 응용 프로그램 이름 변경

  • 데이터베이스 파일을 기준으로 엔터티 데이터 모델 만들기

  • 엔터티 데이터 모델의 데이터를 Silverlight 클라이언트에 노출하는 도메인 서비스 만들기. 자세한 내용은 도메인 서비스를 참조하십시오.

  • 도메인 서비스에서 관련된 데이터를 반환하도록 쿼리 수정

  • 관련 데이터의 로드를 지원하도록 도메인 서비스 메타데이터 수정

  • 사용자에게 데이터를 제공하는 추가 Silverlight 페이지 만들기

  • 기본 탐색 모음에 Silverlight 페이지에 액세스하는 단추 추가

  • 데이터 소스 창에서 Silverlight Designer로 항목을 끌어서 데이터를 표시하도록 Silverlight 페이지 구성

  • 레코드를 탐색하는 DataPager 추가

필수 구성 요소

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 연습을 수행할 때 발생할 수 있는 문제를 최소화하려면 이 연습을 진행하기 전에 여기서 제공하는 지침을 따르십시오.

이 연습에서는 사용자가 Silverlight 비즈니스 응용 프로그램을 만들 수 있다고 가정합니다. 이 작업을 수행하는 절차는 연습: Silverlight 비즈니스 응용 프로그램 템플릿 사용에서 설명합니다.

Silverlight 비즈니스 응용 프로그램 만들기

Silverlight 비즈니스 응용 프로그램은 Silverlight 응용 프로그램을 호스팅하는 ASP.NET 웹 응용 프로그램과 Silverlight 응용 프로그램이라는 두 프로젝트를 포함하는 솔루션입니다. Silverlight 비즈니스 응용 프로그램에는 기본 제공 기능이 있으며 기본적으로 홈 페이지, 정보 페이지, 탐색 모음 및 사이트 등록 기능이 있습니다.

응용 프로그램을 만들려면

  1. Visual Studio 2010에서 AdventureWorksOrders라는 Visual Basic 또는 C#의 새 Silverlight 비즈니스 응용 프로그램 프로젝트를 만듭니다. 이 작업을 수행하는 절차는 연습: Silverlight 비즈니스 응용 프로그램 템플릿 사용에서 설명합니다.

    AdventureWorksOrders Silverlight 프로젝트와 AdventureWorksOrders.Web 웹 응용 프로그램 프로젝트라는 두 프로젝트로 AdventureWorksOrders 솔루션이 만들어집니다.

  2. 솔루션 탐색기에서 AdventureWorksOrders 프로젝트를 확장합니다.

  3. Assets 폴더를 확장한 다음 Resources를 확장합니다.

  4. ApplicationStrings.resx를 두 번 클릭하여 리소스 디자이너를 엽니다.

  5. ApplicationName 리소스 문자열 Adventure Works Orders로 변경합니다.

  6. 변경 내용을 저장하고 ApplicationStrings.resx 파일을 닫습니다.

  7. 응용 프로그램을 실행합니다.

    홈 페이지가 열리고 업데이트된 응용 프로그램 이름이 포함된 기본 디자인이 표시됩니다.

응용 프로그램에 사용할 데이터 모델 만들기

응용 프로그램에서 데이터를 관리하려면 엔터티 데이터 모델을 사용합니다.

엔터티 데이터 모델을 만들려면

  1. 솔루션 탐색기에서 AdventureWorksOrders.Web을 마우스 오른쪽 단추로 클릭하고 추가를 클릭한 다음 새 항목을 클릭합니다.

    새 항목 추가 대화 상자가 나타납니다.

  2. 데이터 범주에서 ADO.NET 엔터티 데이터 모델 템플릿을 클릭합니다.

  3. 이름을 AdventureWorksEDM.edmx로 변경하고 추가를 클릭합니다.

    엔터티 데이터 모델 마법사가 열립니다.

  4. 모델 콘텐츠 선택 페이지에서 데이터베이스에서 생성을 클릭하고 다음을 클릭합니다.

  5. 데이터 연결 선택 페이지에서 새 연결을 클릭합니다.

    연결 속성 대화 상자가 나타납니다.

  6. 데이터 소스로 사용할 Microsoft SQL Server 데이터베이스 파일을 선택하고 AdventureWorksLT 데이터베이스 파일의 위치를 지정합니다.

  7. 확인을 클릭합니다.

  8. 데이터 연결 선택 페이지에서 다음을 클릭합니다.

  9. 데이터베이스 파일을 프로젝트에 복사하고 연결을 수정할지를 묻는 메시지가 나타나면 를 클릭합니다.

  10. 데이터베이스 개체 선택 페이지에서 테이블 노드를 확장합니다.

  11. SalesOrderDetail(SalesLT)SalesOrderHeader(SalesLT) 테이블 옆에 확인 표시를 추가합니다.

    RIARelatedData03ChooseDatabaseObjects

  12. 마침을 클릭합니다.

    Entity Designer에 SalesOrderDetail 및 SalesOrderHeader 테이블이 나타납니다.

  13. 솔루션을 빌드합니다.

    도메인 서비스를 추가하기 전에 솔루션을 빌드해야 합니다.

도메인 서비스 만들기

도메인 서비스는 데이터 모델의 데이터 엔터티 및 작업을 클라이언트에 노출합니다. 이 절차에서는 도메인 서비스를 서비스 프로젝트에 추가합니다.

도메인 서비스를 만들려면

  1. 솔루션 탐색기에서 AdventureWorksOrders.Web을 마우스 오른쪽 단추로 클릭하고 추가를 클릭한 다음 새 항목을 클릭합니다.

    새 항목 추가 대화 상자가 나타납니다.

  2. 범주에서 도메인 서비스 클래스 템플릿을 클릭합니다.

  3. 도메인 서비스 클래스의 이름을 AdventureWorksService로 지정하고 추가를 클릭합니다.

    새 도메인 서비스 클래스 추가 대화 상자가 열립니다.

  4. SalesOrderDetailSalesOrderHeader 엔터티 모두에 대해 편집 사용 확인란을 선택합니다.

    RIARelatedData04AddDomainServiceEntities

  5. 확인을 클릭합니다.

  6. 솔루션을 빌드합니다.

관련 데이터를 포함하도록 도메인 서비스 쿼리 편집

도메인 서비스는 기본 작업을 제공합니다. 사용자가 특정 응용 프로그램에 맞게 이 작업을 수정해야 합니다. 이 절차에서는 관련 SalesOrderDetail 레코드를 반환하도록 GetSalesOrderHeaders 쿼리를 편집합니다. 또한 DataPager를 실행하려면 쿼리에 정렬 순서를 추가해야 합니다.

도메인 서비스 쿼리를 변경하려면

  1. 솔루션 탐색기에서 AdventureWorksService.vb 또는 AdventureWorksService.cs를 두 번 클릭합니다.

  2. 다음 코드와 같이 GetSalesOrderHeaders 메서드를 업데이트합니다.

    Public Function GetSalesOrderHeaders() As IQueryable(Of SalesOrderHeader)
        Return Me.ObjectContext.SalesOrderHeaders.Include("SalesOrderDetails").OrderBy(Function(c) c.SalesOrderID)
    End Function
    
    public IQueryable<SalesOrderHeader> GetSalesOrderHeaders()
    {
        return this.ObjectContext.SalesOrderHeaders.Include("SalesOrderDetails").OrderBy(e => e.SalesOrderID);
    }
    
  3. 솔루션 탐색기에서 AdventureWorksService.metadata.vb 또는 AdventureWorksService.metadata.cs를 두 번 클릭합니다.

  4. SalesOrderHeaderMetadata 클래스에서 SalesOrderDetails 엔터티 컬렉션 문 바로 앞에 Include 특성을 추가합니다.

    <Include()>
    Public Property SalesOrderDetails As EntityCollection(Of SalesOrderDetail)
    
    [Include]
    public EntityCollection<SalesOrderDetail> SalesOrderDetails { get; set; }
    
  5. 솔루션을 빌드합니다.

Silverlight 페이지를 만들어 데이터 표시

이 절차에서는 테이블의 데이터를 표시하도록 Orders 페이지를 추가합니다.

Silverlight 페이지를 만들려면

  1. 솔루션 탐색기의 AdventureWorksOrders에서 Views 폴더를 마우스 오른쪽 단추로 클릭하고 새 항목을 추가합니다.

  2. 새 항목 추가 대화 상자에서 Silverlight 범주를 클릭한 다음 Silverlight 페이지 템플릿을 클릭합니다.

  3. 이름을 Orders.xaml로 바꾸고 추가를 클릭합니다.

홈 페이지에 탐색 단추 추가

이 절차에서는 응용 프로그램의 홈 페이지에 Orders 페이지로 이동하는 단추를 추가합니다.

탐색 단추를 만들려면

  1. 솔루션 탐색기에서 MainPage.xaml을 두 번 클릭합니다.

  2. XAML 뷰에서 <HyperlinkButton x:Name="Link2" ... /> 줄 뒤에 다음 코드를 추가합니다.

    <Rectangle x:Name="Divider3" Style="{StaticResource DividerStyle}"/>
    <HyperlinkButton x:Name="Link3" Content="Orders" Style="{StaticResource LinkStyle}" NavigateUri="/Orders" TargetName="ContentFrame"/>
    
  3. 응용 프로그램을 실행합니다.

    Orders 단추가 탐색 모음에 나타나야 합니다.

  4. Orders 단추를 클릭합니다.

    빈 Orders 페이지가 나타납니다.

페이지에 관련 데이터 표시

이 절차에서는 데이터 소스 창에서 디자이너로 항목을 바로 끌어 Orders 페이지에서 데이터 바인딩된 컨트롤을 만듭니다. 먼저 개별 주문에 대한 기본 정보(예: Account Number, CustomerID 및 Amount Due)를 표시하는 DataGrid를 만듭니다. 그런 다음 해당 주문의 개별 항목을 나열하는 Grid 컨트롤을 만듭니다.

데이터 바인딩된 컨트롤을 만들려면

  1. 솔루션 탐색기에서 Orders.xaml을 두 번 클릭합니다.

  2. 데이터 메뉴를 클릭한 다음 데이터 소스 표시를 클릭합니다.

    데이터 소스 창이 열립니다. 데이터 소스 창에는 응용 프로그램에 사용할 수 있는 엔터티가 이미 포함되어 있습니다.

  3. SalesOrderHeader 노드를 클릭하고 드롭다운 메뉴를 클릭합니다.

  4. 자세히를 클릭합니다.

  5. 데이터 소스 창에서 디자이너로 SalesOrderHeader 노드를 끌어옵니다.

    SalesOrderHeader 테이블의 데이터 필드에 대한 컨트롤로 채워진 Grid가 만들어집니다.

    RIARelatedData06SalesOrderHeaderGridOnLayout

  6. 데이터 소스 창에서 SalesOrderHeader 노드를 확장합니다.

  7. SalesOrderHeader 노드의 자식 노드인 SalesOrderDetails 노드를 클릭합니다.

    RIARelatedData07SalesOrderHeaderSalesOrderDetails

  8. SalesOrderDetails 노드를 개별 주문 컨트롤 옆의 디자이너로 끌어옵니다.

    SalesOrderDetail 테이블의 필드로 채워진 DataGrid가 만들어집니다.

    RIARelatedData08NoPagingYet

주문 데이터를 탐색하는 페이징 추가

이 절차에서는 데이터 소스에 DataPager를 추가하여 페이징을 추가합니다. 페이저가 제어해야 하는 데이터를 관리하는 DomainDataSourceDataPager.Source를 설정합니다.

[!참고] DataPager를 사용하려면 데이터 원본을 명시적으로 정렬해야 합니다. 이를 위해 이 연습의 앞부분에서 OrderBy 절을 쿼리에 추가했습니다.

데이터의 페이징을 구성하려면

  1. 솔루션 탐색기에서 Orders.xaml을 두 번 클릭합니다.

  2. 도구 상자에서 DataPager 컨트롤을 찾습니다.

  3. DataPager를 디자이너로 끌어옵니다.

  4. 데이터 소스 창에서 SalesOrderHeader 노드를 클릭합니다.

  5. SalesOrderHeader 노드를 DataPager로 끌어옵니다.

    그러면 DataPager의 Source 속성이 올바른 데이터 소스로 설정됩니다.

  6. 디자이너에서 DataPager를 선택합니다.

  7. 속성 창에서 PageSize 속성을 1로 설정합니다.

응용 프로그램 테스트

이 절차에서는 응용 프로그램을 빌드하고 실행하여 응용 프로그램이 예상대로 동작하는지 확인합니다.

응용 프로그램을 테스트하려면

  1. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    솔루션이 오류 없이 빌드되는지 확인합니다.

  2. 응용 프로그램을 실행합니다.

  3. Orders 단추를 클릭합니다.

  4. DataPager 단추에서 탐색 단추를 클릭하여 주문 레코드를 탐색합니다.

    주문 헤더 레코드를 탐색하면 관련 주문 정보가 DataGrid에 나타납니다.

    OrderID 및 세부 정보를 보여 주는 완성된 응용 프로그램

다음 단계

이 연습을 완료하면 다음과 같은 관련 작업을 수행할 수 있습니다.

참고 항목

개념

WCF RIA Services
Silverlight 클라이언트