방법: 코드를 사용하여 쿼리에서 데이터 검색
모델에서 쿼리를 검색한 다음, 해당 쿼리를 사용자 코드에서 실행할 수 있습니다.이 기능을 사용하면 응용 프로그램의 비즈니스 논리로 데이터의 대상 컬렉션에 대한 작업을 할 수 있습니다.
예를 들어, 모델에 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;
}
}
}
다음 단계
디자이너를 사용하여 쿼리를 시각적으로 디자인하는 방법에 대해 배우려면 방법: 쿼리 디자이너를 사용하여 쿼리 디자인를 참조하십시오.
코드를 사용하여 모델에서 쿼리를 확장하는 방법을 배우려면 방법: 코드를 사용하여 쿼리 확장를 참조하십시오.