Partilhar via


Consultas: recuperando informações a partir de uma fonte de dados

Você usa uma consulta para retornar dados que correspondem a um conjunto de critérios. Por exemplo, se quiser saber quantos de seus clientes vivem nos Estados Unidos, você criará uma consulta que examinará uma lista de clientes e verificará o país/região especificado em seus endereços.

Você pode criar consultas e salvá-las consultas no modelo do seu aplicativo. Você pode especificar os critérios de pesquisa usando o designer de consulta. Se o designer de consulta não fornece a funcionalidade de que precisa, você pode estender as consultas escrevendo um código. Ao especificar seus critérios, consuma as consultas em uma tela ou as execute como parte de sua lógica de negócio.

Criando uma consulta

Você pode criar consultas no Gerenciador de Soluções. Uma consulta é baseada em apenas uma entidade ou tabela no modelo de seu aplicativo (por exemplo, uma entidade Customer). Uma consulta pode também ser baseada em outras consultas no modelo de seu aplicativo. A entidade, a tabela, ou a consulta em que a consulta é baseada, é chamada de dados de origem da consulta. Para obter mais informações, consulte Como adicionar, remover e modificar uma consulta.

Criando uma consulta usando o designer de consultas

Na maioria dos casos, você pode criar uma consulta visualmente usando o designer de consultas. Adicione condições de filtro e grupos de filtros, termos de classificação e parâmetros a uma consulta fazendo seleções no designer. Para obter mais informações, consulte Como criar uma consulta usando o Designer de Consulta.

Condições de filtro

Você pode restringir os resultados de uma consulta adicionando uma ou mais condições de filtro. Uma condição de filtro descreve uma regra que deve ser respeitada pela linha de dados. Linhas compatíveis com a regra são incluídas nos resultados da consulta. Uma condição de filtro contém estas três partes básicas:

  • Uma propriedade de seleção

  • Um valor de comparação

  • Um operador

Uma propriedade de seleção é a propriedade que você deseja usar como a base da condição de filtro. Por exemplo, para retornar ordens de venda que tenham uma determinada data, você pode usar OrderDate como a propriedade de seleção. Uma propriedade de seleção pode ser uma propriedade nos dados de origem ou uma propriedade em uma entidade ou tabela relacionada. No designer de consultas, as propriedades aparecem somente para entidades ou tabelas relacionadas que tenham uma multiplicidade de zero para um ou um. Por exemplo, uma ordem de venda tem apenas um cliente. Portanto, em uma consulta que retorne ordens de venda, você pode selecionar as propriedades do cliente relacionado como parte de uma condição de filtro. Se quiser usar uma propriedade em uma entidade ou tabela relacionada que tenha uma multiplicidade de muitos, você deverá estender a consulta usando código.

O valor de comparação é comparado com a propriedade de seleção. Um valor de comparação pode ser um valor literal como a cadeia de caracteres "9/22/2009 12:00:00 AM", uma propriedade de seleção, um parâmetro ou um valor relativo como Agora, Hoje ou Início da Semana.

Um operador é um símbolo que especifica o tipo de comparação que você deseja fazer. Por exemplo, para retornar ordens de venda cuja data seja anterior a "9/22/2009 12:00:00 AM", você selecionaria o operador "<".

A condição de filtro completa descrita neste exemplo é Where OrderDate < 9/22/2009 12:00:00 AM.

Você pode relacionar uma condição de filtro a outras condições de filtro usando um dos seguintes operadores lógicos: And, Or, And Not e Or Not.

Você pode alterar a ordem das condições arrastando-as para suas posições desejadas no designer.

A ilustração a seguir mostra as partes de uma condição de filtro.

Condições de filtro em uma consulta

Grupos de filtros

Você pode agrupar condições de filtro, de modo que elas sejam avaliadas como uma única unidade separada do restante das condições de filtro. Para fazer isso, crie um grupo de filtros no designer de consultas.

Agrupar condições de filtro é como colocar uma expressão entre parênteses em uma equação matemática ou instrução lógica. Quando você agrupa condições, o operador lógico que aparece antes da primeira condição em um grupo aplica-se ao grupo inteiro.

Assim como condições de filtro individuais, você pode alterar a ordem dos grupos de filtros arrastando-os para a posição desejada no designer.

A ilustração a seguir mostra dois grupos de filtros.

Grupos de filtro em uma consulta

Termos de classificação

Você pode especificar a ordem padrão em que os registros aparecem nos resultados de uma consulta adicionando um ou mais termos de classificação. Um termo de classificação contém uma propriedade e uma direção (por exemplo, OrderDate e Ascending). Termos de classificação definem a ordem padrão dos registros que aparecem em uma tela. Usuários podem ver registros em uma ordem diferente fazendo seleções na interface do usuário (IU) da tela. No designer de consultas, você pode alterar a ordem de termos de classificação arrastando-os para posição desejada na lista.

Parâmetros

Você pode permitir que usuários filtrem dinamicamente resultados da consulta. Por exemplo, você pode permitir que um usuário exiba ordens de venda regionais selecionando um território de vendas específico em uma tela. Para dar suporte a esse cenário, adicione um parâmetro a uma consulta e nomeie-a corretamente (por exemplo, SalesTerritory). Depois defina o valor de comparação de um filtro como o parâmetro. Por exemplo, a expressão de consulta pode ser Where TerritoryID = SalesTerritory.

Você pode criar telas que permitam que os usuários forneçam o valor do parâmetro no tempo de execução. Para obter mais informações, consulte Como fornecer um valor para um parâmetro de consulta.

Estendendo uma consulta usando um código

Alguns tipos de condições de filtro não são compatíveis pelo designer de consultas. Se encontrar uma limitação no designer, você poderá adicionar condições à consulta usando código.

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.

A tabela a seguir mostra duas condições de filtro que você não pode criar usando o designer de consultas.

Condição de filtro

Motivo para usar o código

Retorne os 10 melhores clientes com base no número de ordens de venda.

Para determinar o número de ordens de venda, você deve usar a operação Count. Operações como Count, Aggregate e Sum não estão disponíveis no designer de consultas

Retorne todos os clientes que compraram um carrinho da mão.

Para determinar se um cliente comprou um carrinho da mão, você precisa usar uma condição de filtro que referencie uma entidade Product. Como um cliente pode ser associado a vários produtos, a entidade Product provavelmente existiria no lado de muitos de uma relação Customer-Product. O designer de consultas não permite que você navegue para o lado de muitos de uma relação.

Para resolver essa limitação, você pode adicionar código personalizado a um método que é chamado quando a consulta é executada. Para obter mais informações, consulte Como estender uma consulta usando código.

Em seu código, você pode definir condições de filtro usando sintaxe LINQ padrão. Quando a consulta é executada, as condições que você define no designer são combinadas com as condições que você define em seu código para produzir o resultado da consulta.

Quaisquer condições que você defina em seu código não aparecem como condições de filtro no designer de consultas. Da mesma forma, condições de filtro que você adiciona usando o designer de consultas não aparecem no método. Se você quiser adicionar um parâmetro a uma consulta, faça isso usando somente o designer de consultas. Parâmetros que você adiciona usando o designer de consultas aparecem na lista de parâmetros do método.

Consumindo uma consulta

Você pode consumir uma consulta em uma tela ou executar a consulta em código como parte de uma operação de negócio.

Consumindo uma consulta em uma tela

Você pode criar uma tela baseada em uma consulta personalizada (por exemplo, uma tela que mostre uma lista de clientes localizados nos Estados Unidos). Para obter mais informações, consulte Como criar uma tela do Silverlight.

Você pode adicionar várias consultas a uma tela. Por exemplo, você pode criar uma consulta que mostre uma lista de ordens de venda para um cliente específico. Você pode adicionar essa consulta à tela Cliente. Você pode então permitir que o usuário selecione um cliente para exibir todas as ordens de venda relacionadas. Para obter mais informações sobre como fazer isso, consulte Como fornecer um valor para um parâmetro de consulta.

Consumindo uma consulta em código

Você pode recuperar consultas do modelo do aplicativo e depois executá-las no código. Isso permite que você trabalhe com coleções de dados de destino na lógica de negócio do seu aplicativo. Para obter mais informações, consulte Como recuperar dados a partir de uma consulta usando código.

Tópicos relacionados

Título

Descrição

Como adicionar, remover e modificar uma consulta

Explica onde você pode adicionar uma consulta na interface do usuário Visual Studio LightSwitch.

Como criar uma consulta usando o Designer de Consulta

Descreve como definir as condições de filtro, parâmetros e os termos de classificação de uma consulta usando um designer visual.

Como fornecer um valor para um parâmetro de consulta

Descreve como habilitar usuários para fornecer um valor a um parâmetro de consulta.

Como estender uma consulta usando código

Descreve como modificar uma consulta de maneiras que vão além dos recursos do designer.

Como tratar eventos de consulta

Descreve como identificar eventos que ocorrem antes e depois de uma consulta ser executada.

Como recuperar dados a partir de uma consulta usando código

Descreve como recuperar e executar uma consulta usando código.

Referência: propriedades do Designer de Consulta

Descreve as propriedades de consultas e elementos de consulta. Você pode definir os valores dessas propriedades na janela Propriedades.