Поделиться через


Проекции данных (EntityDataSource)

Обновлен: Ноябрь 2007

Можно проектировать определенные свойства объектов, возвращаемых элементом управления EntityDataSource с использованием свойства Select. Свойство Select элемента управления EntityDataSource содержит строку, представляющую инструкцию SELECT запроса Entity SQL. Эта строка передается без изменений объекту ObjectQuery<T>, который при выполнении возвращает данные элементу управления EntityDataSource. Строка, заданная в свойстве Select, имеет такой же формат, что и строка, передаваемая методу Select объекта ObjectQuery<T>. Примеры использования предложения SELECT для определения проекции для запроса см. в разделе Практическое руководство. Выполнение запроса, возвращающего анонимный тип (Entity Framework).

Cc488524.alert_note(ru-ru,VS.90).gifПримечание.

Обновление проецируемых данных не поддерживается. При использовании свойства Select для задания проекции привязка данных не поддерживает обновление.

В следующей разметке XML свойство Select используется для задания проекции с шестью свойствами типа Product.

<asp:EntityDataSource ID="ProductDataSource" runat="server" 
    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> 

Предыдущий пример XML аналогичен следующему ObjectQuery<T> с именем products.

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

Передача параметров

Как и в случае с методом Select класса ObjectQuery<T>, можно передавать параметры проекции, определяемой свойством Select. Необходимо определить свойство SelectParameters элемента управления EntityDataSource, чтобы указать ParameterCollection для инструкции SELECT в запросе. Свойство SelectParameters использует именованные аргументы для ссылки на параметры в свойстве Select.

Если свойство SelectParameters не определено, подстановка параметров не выполняется. Всем именам параметров в инструкции SELECT, имеющим префикс в виде символа "@", должны соответствовать имена в ParameterCollection. Для параметров, заданных в ParameterCollection, значение null не допускается.

В следующем примере применяется скидка 90% для каждого элемента Product в запросе с использованием параметра одной из проекций свойства.

<asp:EntityDataSource ID="EntityDataSource6" runat="server"
        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>

См. также

Основные понятия

Конструктор EntityDataSource

Другие ресурсы

Выбор данных с помощью EntityDataSource

Запросы объектов (Entity Framework)