Compartilhar via


Como: recuperar dados de uma consulta usando código

Você pode recuperar consultas do modelo e então executá-las no seu código. Isso permite que você trabalhe com coleções de dados de destino na lógica comercial do seu aplicativo.

Por exemplo, o seu modelo pode conter uma consulta chamada Products in Stock. Para determinar se um produto está disponível, você pode escrever um código de validação que recupera a consulta Products in Stock em seguida, executa a consulta. Depois que a consulta é executada, seu código pode fazer iterações sobre a coleção resultante. Se um produto nessa coleção é correspondente a um produto no pedido de venda atual, o usuário pode notificar o cliente sobre o atraso.

Você também pode adicionar um código para restringir os resultados de uma consulta usando uma cláusula where. Usando uma cláusula where para refinar os resultados de uma consulta pode melhorar o desempenho porque as condições da cláusula where são aplicadas na camada do servidor. Para obter mais informações, consulte Consultas: Recuperando informações de uma fonte de dados.

Exemplo: Recuperando Dados de uma Consulta e Iterar Através dos Resultados

O seguinte método auxiliar é chamado quando um usuário adiciona uma nova linha para um pedido de venda. Se você tivesse uma entidade chamada Order_Details, você poderia chamar este método do método Order_Details_Inserting.

Este código recupera os 10 melhores clientes baseado nos pedidos de venda executando uma consulta chamada TopNSalesOrders. Se a identificação do cliente que colocou esse pedido for correspondente à identificação de qualquer cliente retornado pela consulta, um desconto de 10% é aplicado para o item da linha.

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;
        }
    }
}

Exemplo: Restringir os Resultados de uma Consulta Aplicando uma Cláusula Where

O código a seguir pode ser usado como uma alternativa ao exemplo anterior. Esse código aplica uma cláusula where para a consulta TopNSalesOrders e retorna apenas um cliente se o cliente está colocando o pedido atual.

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;
    }
}
}

Próximas etapas

Para saber como criar uma consulta visualmente usando um designer, veja Como: criar uma consulta usando o criador de consultas.

Para saber como estender uma consulta no modelo usando código, veja Como: estende uma consulta usando código.

Consulte também

Tarefas

Como: adicionar, remover e modificar uma consulta

Passo a passo: Criando uma tela

Como: criar uma consulta usando o criador de consultas

Como: estende uma consulta usando código

Outros recursos

Consultas: Recuperando informações de uma fonte de dados