Compartilhar via


Filtragem de dados (EntityDataSource)

The Where propriedade das EntityDataSource controle é uma seqüência de caracteres que representa um ONDE cláusula que é o predicado de uma consulta do Entity SQL.Essa seqüência é passada sem modificações, para um ObjectQuery<T> executado pela Serviços de Objeto. Esta consulta é a fonte de dados controladas pelo EntityDataSource controle. A seqüência de caracteres para o Where propriedade usa o mesmo formato, sistema autônomo a cadeia de caracteres passada para o Where método de ObjectQuery<T>. Para obter exemplos de como usar o ONDE cláusula para filtrar uma consulta, consulte How to: Filter Data (Entity Framework).

Passando Parâmetros

Como a Where método para o ObjectQuery<T> classe, parâmetros podem ser passados para o predicado atribuído à Where propriedade. The WhereParameters propriedade das EntityDataSource controle especifica um ParameterCollection que contém os parâmetros para fornecer à cláusula WHERE da consulta. The WhereParameters propriedade utiliza argumentos nomeados para referir-se os parâmetros especificados na seqüência de caracteres fornecida para o Where propriedade.

Se o WhereParameterspropriedade não está definida, não é feita nenhuma substituição de parâmetros. Todos os nomes de parâmetro na cláusula WHERE, o prefixo de "@" símbolo, deve ter um nome correspondente na ParameterCollection. Valores nulo não são permitidos para parâmetros em um ParameterCollection.

Exemplo

A marcação XML no exemplo a seguir em um arquivo.aspx, recupera um valor de um controle e transmite-a sistema autônomo um parâmetro para o Where propriedade.

<asp:EntityDataSource ID="SalesOrderHeader"  
  ConnectionString="name=AdventureWorksEntities" 
  DefaultContainerName="AdventureWorksEntities" EnableDelete="True" 
  EnableInsert="True" EnableUpdate="True" EntitySetName="SalesOrderHeader" 
  EntityTypeFilter="" OrderBy="it.TotalDue DESC" Select="" 
   Where="it.OnlineOrderFlag = TRUE AND it.TotalDue &gt; @ordercost">
  <WhereParameters>
    <asp:ControlParameter ControlID="costLimit" DbType="Int32" 
      DefaultValue="2500" Name="ordercost" PropertyName="Text" />
  </WhereParameters>
</asp:EntityDataSource>

O exemplo XML anterior é equivalente à seguinte ObjectQuery<T>, chamado onlineOrders:

ObjectQuery<SalesOrderHeader> onlineOrders =
      context.SalesOrderHeader
       .Where("it.OnlineOrderFlag = TRUE AND it.TotalDue > @ordercost",
         new ObjectParameter("ordercost", orderCost))
        .OrderBy("it.TotalDue DESC");

Gerando automaticamente cláusula WHERE

Quando o AutoGenerateWhereClause propriedade das EntityDataSource o controle é conjunto para true, o controle gera automaticamente uma cláusula WHERE de parâmetros na ParameterCollection atribuídas à WhereParameters propriedade. Isso elimina a necessidade de atribuir explicitamente uma cláusula WHERE à Where propriedade. A construção da cláusula WHERE do WhereParameters propriedade requer que o Name propriedade de cada parâmetro na coleção identifica uma única propriedade do item retornado da consulta.

Exemplo

O exemplo a seguir pressupõe que uma caixa de seleção define o sinalizar de pedido online:

<asp:EntityDataSource ID="SalesOrderHeader"  
    ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities" EnableDelete="True" 
    EnableInsert="True" EnableUpdate="True" EntitySetName="SalesOrderHeader" 
    EntityTypeFilter="" Select="" AutoGenerateWhereClause="True">
    <WhereParameters>
        <asp:ControlParameter ControlID="onlineOrder" DefaultValue="true" 
            Name="OnlineOrderFlag" PropertyName="Text" DbType="Boolean" />
    </WhereParameters>
</asp:EntityDataSource>

Consulte também

Conceitos

Configurando o controle EntityDataSource

EntityDataSource Designer

Outros recursos

Object Services Overview (Entity Framework)

Query Builder Methods (Entity Framework)