Como estender uma consulta usando código
Se quiser modificar uma consulta de uma forma que vá além das capacidades do designer de consultas, você poderá estender a consulta escrevendo código.
Visual Studio LightSwitch mistura as condições que você especificou no designer de consultas com as condições que especificou no seu código para produzir o resultado da consulta. Para obter mais informações, consulte Consultas: recuperando informações a partir de uma fonte de dados.
Dica
Você não pode estender a consulta de uma tela.Você só pode estender consultas que apareçam no Gerenciador de Soluções.Para obter mais informações sobre como editar a consulta de uma tela, consulte Como filtrar dados em uma tela do Silverlight.
Para 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 de Consulta Adicional.
O arquivo de código do servidor é aberto 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 for GetCustomers, o nome do método que aparece no Editor de Códigos será GetCustomers_PreprocessQuery.
Personalize a consulta adicionando código a este método. Use a sintaxe LINQ. Para obter mais informações sobre como escrever consultas LINQ no Visual Basic, consulte Introdução a LINQ no Visual Basic. Para obter mais informações sobre como escrever consultas no C#, consulte Introdução a LINQ em C#.
Exemplos
Os exemplos a seguir mostram duas maneiras de modificar uma consulta usando código.
Os primeiros N clientes com base nos pedidos de vendas
A consulta a seguir retorna clientes que fizeram 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.
Dica
Adicione parâmetros no designer de consultas.
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 essa consulta usando o designer de consultas pelas seguintes razões:
Os pedidos aparecem no lado de muitos do relacionamento cliente/pedido. O designer de consulta impede que você referencie entidades relacionadas que tenham uma multiplicidade de muitos.
A consulta conta os pedidos usando a operação Count. O designer de consultas não dá 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 um 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 essa consulta usando o designer de consultas porque o designer de consultas impede que você referencie entidades relacionadas que tenham uma multiplicidade de muitos.
Próximas etapas
Para saber como criar visualmente uma consulta, consulte Como criar uma consulta usando o Designer de Consulta.
Para saber como usar uma consulta em uma tela, consulte Como filtrar dados em uma tela do Silverlight.
Para saber como executar uma consulta no código personalizado que você adicionou a um aplicativo, consulte Como recuperar dados a partir de uma consulta usando código.
Consulte também
Tarefas
Como adicionar, remover e modificar uma consulta
Outros recursos
Consultas: recuperando informações a partir de uma fonte de dados