Определение путей запросов (EntityDataSource)

Visual Studio 2010

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

Можно определить, какие объекты должны быть возвращены вместе со специально запрошенным объектом, путем использования свойства Includeэлемента управления EntityDataSource для задания разделенного запятыми списка путей запроса. Каждое из разделенных запятыми значений в этой строке передается без изменений в отдельном вызове метода Include объекта ObjectQuery<T>, который является источником данных для элемента управления EntityDataSource.

Строка, заданная в свойстве Include, имеет такой же формат, что и строка, передаваемая методу Include объекта ObjectQuery<T>. Пример применения путей запроса для автоматической загрузки связанных объектов см. в разделе Практическое руководство. Использование путей запроса для формирования результатов (Entity Framework).

Следующая разметка XML определяет путь запроса, возвращающего объекты SalesOrderHeader, связанные с возвращенным объектом Contact. С каждым SalesOrderHeader возвращаются также связанные объекты SalesOrderDetail и Address.

<asp:EntityDataSource ID="ContactDataSource" runat="server" 
    AutoGenerateWhereClause="True" ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities" EnableDelete="True" 
    EnableInsert="True" EnableUpdate="True" EntitySetName="Contact" 
    Include="SalesOrderHeader.SalesOrderDetail, SalesOrderHeader.Address">
    <WhereParameters>
        <asp:ControlParameter ControlID="customerId" Name="ContactID" 
            PropertyName="Text" />
    </WhereParameters>
</asp:EntityDataSource>

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

ObjectQuery<Contact> contacts =
      context.Contact
       .Where("it.ContactID = @ContactID",
         new ObjectParameter("ContactID", customerId))
        .Include("SalesOrderHeader.SalesOrderDetail")
        .Include("SalesOrderHeader.Address");

Показ: