方法: コードを使用してクエリからデータを取得する
モデルからクエリを取得し、それらをコードで実行できます。これにより、アプリケーションのビジネス ロジックで、データのターゲット コレクションを使用することができます。
たとえば、モデルに、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 句を適用した、クエリ結果の絞り込み
次のコードは、前のコード例の代わりとして使用できます。このコードで、Where 句が TopNSalesOrders クエリに適用され、顧客が現在の注文を発注している場合にのみ、顧客が返されます。
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;
}
}
}
次の手順
デザイナーを使用してクエリを視覚的にデザインする方法については、「方法: クエリ デザイナーを使用してクエリをデザインする」を参照してください。
コードを使用してモデルでクエリを拡張する方法については、「方法: コードを使用してクエリを拡張する」を参照してください。