Como: estende uma consulta usando código
Se deseja modificar uma consulta de uma forma que vai além das capacidades do designer de consulta, você pode estender a consulta escrevendo código.
Visual Studio LightSwitch mistura as condições que você especificou no designer de consulta com as condições que você especificou no seu código para produzir o resultado da consulta.Para obter mais informações, consulte Consultas: Recuperando informações de uma fonte de dados.
Observação |
---|
Você não pode estender a consulta de uma telaVocê só pode estender consultas que aparecem no Gerenciador de Soluções.Para obter mais informações sobre como editar a consulta de uma tela, veja Como filtrar dados em uma tela do Silverlight. |
Estender uma consulta usando código
Abra uma consulta no Designer de Consulta.Para obter mais informações, consulte Como: adicionar, remover e modificar uma consulta.
Na janela de Propriedades, clique em Editar Código adicional de consulta.
O arquivo de código do servidor abre no Editor de Códigos.Um método que representa sua consulta aparece no arquivo do código.O nome do método começa com o nome da sua consulta e termina com a palavra _PreprocessQuery.Por exemplo, se o nome da sua consulta é GetCustomers, o nome do método que aparece no Editor de Códigos é GetCustomers_PreprocessQuery.
Personalize a consulta adicionando código para este método.Use sintaxe LINQ.Para obter mais informações sobre como escrever consultas LINQ no Visual Basic, veja Guia de Introdução do LINQ em Visual Basic.Para obter mais informações sobre como escrever consultas em C#, veja Guia de Introdução do LINQ em C#.
Exemplos
Os seguintes exemplos mostram duas maneiras de alterar uma consulta através do uso de código.
Os primeiros N clientes Baseado nos Pedidos de Venda
A seguinte consulta retorna clientes que colocaram o maior número de pedidos.Um parâmetro chamado TopN é passado para o método.O parâmetro TopN especifica o número de clientes a ser retornado no resultado.
Observação |
---|
Adicionar parâmetros no designer de consulta. |
Private Sub TopNSalesOrders_PreprocessQuery _
(ByVal TopN As System.Nullable(Of Short), _
ByRef query As System.Linq.IQueryable(Of LS_Queries_VB.Customer))
query = From myCustomer In query
Where myCustomer.Orders.Count > 0
Select myCustomer
Order By myCustomer.Orders.Count Descending
Take (TopN)
End Sub
partial void TopNSalesOrders_PreprocessQuery
(short? TopN, ref IQueryable<Customer> query)
{
query = (from myCustomer in query
where myCustomer.Orders.Count() > 0
orderby myCustomer.Orders.Count() descending
select myCustomer).Take(System.Convert.ToInt16(TopN));
}
Você não pode criar esta consulta usando o designer de consulta pelas seguintes razões:
Os pedidos aparecem nos muitos lado do relacionamento cliente-pedido.O designer de consulta impede que você referencie entidades relacionadas que têm uma multiplicidade de muitos.
A consulta conta os pedidos usando a operação Count.O designer de consulta não oferece suporte ao uso de operações como Count, Aggregate e Sum.
Todos os Clientes Que Compraram um Determinado Produto
A consulta a seguir retorna todos os clientes que compraram produto específico navegando em várias relações um-para-muitos.
Private Sub CustomersWhoBoughtProduct_PreprocessQuery _
(ByVal ProductID As System.Nullable(Of Short), _
ByRef query As System.Linq.IQueryable(Of LS_Queries_VB.Customer))
query = From myCustomers In query
From myOrders In myCustomers.Orders
From myOrderDetails In myOrders.Order_Details
Where myOrderDetails.Product.ProductID = ProductID
Select Customers
End Sub
partial void CustomersWhoBoughtProduct_PreprocessQuery
(short? ProductID, ref IQueryable<Customer> query)
{
query = from myCustomers in query
from myOrders in myCustomers.Orders
from myOrderDetails in myOrders.Order_Details
where myOrderDetails.Product.ProductID == ProductID
select myCustomers;
}
Você não pode criar esta consulta usando o designer de consulta porque o designer de consulta impede que você referencie entidades relacionadas que tenham uma multiplicidade de muitos.
Próximas etapas
Para saber como criar visualmente uma consulta, veja Como: criar uma consulta usando o criador de consultas.
Para saber como usar uma consulta em uma tela, veja Como filtrar dados em uma tela do Silverlight.
Para saber como executar uma consulta no código personalizado que você adicionou a um aplicativo, veja Como: recuperar dados de uma consulta usando código.
Consulte também
Tarefas
Como: adicionar, remover e modificar uma consulta
Outros recursos
Consultas: Recuperando informações de uma fonte de dados
Guia de Introdução do LINQ em C#