如何:使用代码从查询检索数据

您可以从模型中检索查询,然后使用代码执行这些查询。 这使您能够使用您的应用程序的业务逻辑中的数据的目标集合。

例如,您的模型可能包含名为 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;
    }
}
}

后续步骤

若要了解如何通过使用设计器以可视方式设计查询,请参见 如何:使用查询设计器设计查询

若要了解如何通过使用代码在模型中扩展查询,请参见 如何:使用代码扩展查询

请参见

任务

如何:添加、删除和修改查询

演练:设计一个屏幕

如何:使用查询设计器设计查询

如何:使用代码扩展查询

其他资源

查询:从数据源检索信息