共用方式為


如何:使用程式碼從查詢擷取資料

您可以從模型中擷取查詢,然後在程式碼中加以執行。 這可讓您使用您的應用程式商務邏輯來處理目標資料集合。

例如,您的模型可能含有一個名為 Products in Stock 的查詢。 若要判斷某個產品是否可用,您可以撰寫可擷取 Products in Stock 查詢的驗證程式碼,然後執行該查詢。 執行查詢後,您的程式碼可以逐一查看結果集合。 如果這個集合中的產品符合目前銷售訂單中的產品,使用者可以通知客戶以告知延遲。

您還可以加入程式碼,透過使用 where 子句來縮小查詢結果。 使用 where 子句縮小查詢結果可以提高效能,因為 where 子句的條件是套用在伺服器層。 如需詳細資訊,請參閱查詢:從資料來源擷取資訊

範例:從查詢中擷取資料,並逐一查看結果

下面 Helper 方法會在使用者於銷售訂單中加入一行新的資料時被呼叫。 如果您有一個名為 Order_Details 的實體,則可以從 Order_Details_Inserting 方法來呼叫這個方法。

此程式碼會透過執行名為 TopNSalesOrders 的查詢,根據銷售訂單來擷取前十大客戶。如果這個訂單的客戶 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;
    }
}
}

後續步驟

若要了解如何使用設計工具以視覺化方式設計查詢,請參閱 如何:使用查詢設計工具設計查詢

若要了解如何透過使用程式碼來擴充模型中的查詢,請參閱 如何:使用程式碼擴充查詢的功能

請參閱

工作

如何:新增、移除和修改查詢

逐步解說:在 LightSwitch 中設計 Silverlight 螢幕

如何:使用查詢設計工具設計查詢

如何:使用程式碼擴充查詢的功能

其他資源

查詢:從資料來源擷取資訊