Compartilhar via


Projeções de dados (EntityDataSource)

Você pode propriedades específicas do projeto dos objetos que um EntityDataSource usando o controle retorna a Select propriedade. The Select propriedade das EntityDataSource controle contém uma seqüência de caracteres que representa o selecionar demonstrativo de uma entidade consulta SQL.Essa seqüência de caracteres é passada, sem modificação, a ObjectQuery<T> que, quando executado, retorna os dados para o EntityDataSource controle. A seqüência de caracteres para o Select propriedade usa o mesmo formato, sistema autônomo a cadeia de caracteres passada para o Select método de ObjectQuery<T>. Para obter exemplos de como usar o selecionar cláusula para definir uma projeção de uma consulta, consulte How to: Execute a Query that Returns an Anonymous Type (Entity Framework).

Observação:

Não há suporte para atualizações de dados projetados.Quando você usa o Select propriedade para especificar uma projeção, a vinculação de dados não oferece suporte a atualizações.

A seguinte marcação XML usa o Select propriedade para especificar uma projeção com seis das propriedades das Product tipo:

<asp:EntityDataSource ID="ProductDataSource"  
    ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities" 
    EntitySetName="Product" OrderBy="it.ProductID" 
    Select="it.ProductID, it.Name, it.ListPrice, 
    it.Size, it.Style, it.Weight">
</asp:EntityDataSource> 

O exemplo XML anterior é o mesmo que o seguinte ObjectQuery<T> chamada products:

ObjectQuery<Product> products = context.Product
    .Select(it.ProductID, it.Name, it.ListPrice, 
      it.Size, it.Style, it.Weight)
    .OrderBy("it.ProductID");

Passando Parâmetros

Como a Select método para o ObjectQuery<T> classe, você pode passar parâmetros para a projeção em que o Select Define a propriedade. Você deve definir o SelectParameters propriedade das EntityDataSource controle para especificar um ParameterCollection para a demonstrativo selecionar da consulta. The SelectParameters propriedade utiliza argumentos nomeados para referir-se os parâmetros de Select propriedade.

Se você não definir o SelectParameterspropriedade, não é feita nenhuma substituição de parâmetros. Todos os nomes de parâmetro na demonstrativo selecionar, 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.

O exemplo a seguir aplica um desconto de 90 % para cada Product na consulta usando um parâmetro em uma das projeções de propriedade.

<asp:EntityDataSource ID="EntityDataSource6" 
        EnableViewState="False"
        EntitySetName="Products" 
        ConnectionString="name=NorthwindContext" 
        DefaultContainerName="NorthwindContext" 
        EntityTypeFilter="Products" 
        Select="it.ProductID, it.UnitsInStock, it.ProductName,
              it.UnitPrice * @Discount as UnitPrice,
              it.UnitsOnOrder as UnitsOnOrder, it.Discontinued" 
        Where="it.ProductID < 10" 
    >
    <SelectParameters>
        <asp:Parameter Name="Discount" DefaultValue=".90"
             Type="Decimal" />
    </SelectParameters>
</asp:EntityDataSource>

Consulte também

Conceitos

EntityDataSource Designer

Outros recursos

Seleção de dados usando EntityDataSource

Object Queries (Entity Framework)