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