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 > @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