다음을 통해 공유


방법: 코드를 사용하여 쿼리에서 데이터 검색

모델에서 쿼리를 검색한 다음, 해당 쿼리를 사용자 코드에서 실행할 수 있습니다.이 기능을 사용하면 응용 프로그램의 비즈니스 논리로 데이터의 대상 컬렉션에 대한 작업을 할 수 있습니다.

예를 들어, 모델에 Products in Stock이라는 쿼리를 포함할 수 있습니다.제품을 사용할 수 있는지 확인하려면 Products in Stock 쿼리를 검색하고 쿼리를 실행하는 유효성 검사 코드를 작성할 수 있습니다.쿼리를 실행한 후 코드를 결과 컬렉션에서 반복할 수 있습니다.이 컬렉션의 제품이 현재 판매 주문에 일치하면 사용자는 지연에 대해 고객에게 알릴 수 있습니다.

where 절을 사용하여 쿼리 결과를 좁히는 코드를 추가할 수도 있습니다.Where 절을 사용하여 쿼리 결과를 좁혀 절의 성능을 향상시킬 수 있습니다. where 절의 조건이 서버 계층에 적용되기 때문입니다.자세한 내용은 쿼리: 데이터 소스에서 정보 검색를 참조하십시오.

예제: 쿼리에서 데이터를 검색하고 결과를 반복하기

다음 도우미 메서드는 사용자가 판매 주문에 새 줄을 추가하는 경우에 호출됩니다.Order_Details라는 엔터티가 있을 경우 이 메서드를 Order_Details_Inserting 메서드에서 호출할 수 있습니다.

이 코드는 이름이 TopNSalesOrders인 쿼리를 실행하여 판매 주문을 기준으로 상위 10명의 고객을 검색합니다.이 순서를 배치한 고객의 ID가 쿼리에서 반환하는 고객의 ID와 일치하면 10% 할인이 그 줄 항목에 적용됩니다.

Private Sub Good_Customer_Discount(ByVal entity As Order_Detail)
    For Each cust As Customer In _
        Me.DataWorkspace.NorthwindData.TopNSalesOrders(10)
        If cust.CustomerID = entity.Order.Customer.CustomerID Then
            entity.Discount = 0.1
        End If
    Next

End Sub
private void Good_Customer_Discount(Order_Detail entity)
{
    foreach (Customer cust in this.DataWorkspace.NorthwindData.
 TopNSalesOrders(10))
    {
        if (cust.CustomerID == entity.Order.Customer.CustomerID)
        {
            entity.Discount = 0.1F;
        }
    }
}

예제: Where 절을 적용하여 쿼리 결과 좁히기

앞의 예제를 대신하여 다음 코드를 사용할 수 있습니다.이 코드는 TopNSalesOrders 쿼리에 where 절을 적용하고 고객이 현재 주문을 배치하면 고객을 반환합니다.

Private Sub Good_Customer_Discount2(ByVal entity As Order_Detail)
    Dim query As IDataServiceQueryable(Of Customer)
    query = From mycustomer In Me.DataWorkspace.NorthwindData.TopNSalesOrders(10)
            Where mycustomer.CustomerID = entity.Order.Customer.CustomerID
            Select mycustomer

    If Not IsNothing(query.SingleOrDefault) Then
        entity.Discount = 0.01
    End If

End Sub
private void Good_Customer_Discount2(Order_Detail entity)
{
    IDataServiceQueryable<Customer> query;

    query = from myCustomer in this.DataWorkspace.NorthwindData.
                TopNSalesOrders(10)
            where myCustomer.CustomerID == entity.Order.Customer.CustomerID
            select myCustomer;

    if (query.SingleOrDefault() != null)
    {
        entity.Discount = 0.1F;
    }
}
}

다음 단계

디자이너를 사용하여 쿼리를 시각적으로 디자인하는 방법에 대해 배우려면 방법: 쿼리 디자이너를 사용하여 쿼리 디자인를 참조하십시오.

코드를 사용하여 모델에서 쿼리를 확장하는 방법을 배우려면 방법: 코드를 사용하여 쿼리 확장를 참조하십시오.

참고 항목

작업

방법: 쿼리 추가, 제거 및 수정

연습: 화면 디자인

방법: 쿼리 디자이너를 사용하여 쿼리 디자인

방법: 코드를 사용하여 쿼리 확장

기타 리소스

쿼리: 데이터 소스에서 정보 검색