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>