Как добавить Количество дочерней таблицы в EntityDataSource - PullRequest
1 голос
/ 02 августа 2011

У меня есть EntityDataSource, который работает для получения данных строки из tblOrderFile следующим образом:

<asp:EntityDataSource ID="entityDataSourcePreorder" runat="server" 
        ConnectionString="name=iDBEntities" 
        DefaultContainerName="iDBEntities" EnableFlattening="False" 
        EntitySetName="tblOrderFiles" 
        Select="it.[pkOrderFileID], it.[fkOrderFileStatusID], it.[Filename], it.[CreateDate], it.[UserId]" 
        AutoGenerateWhereClause="True" EntityTypeFilter="" Where="">

Теперь я хотел бы изменить его, чтобы он также возвращал количество строк в дочерней таблице tblOrderFileItem (с именем набора сущностей tblOrderFileItems).

Я нашел способ заставить Count работать, добавив директиву Include следующим образом:

    <asp:EntityDataSource ID="entityDataSourcePreorder" runat="server" 
        ConnectionString="name=iDBEntities" 
        DefaultContainerName="iDBEntities" EnableFlattening="False" 
        EntitySetName="tblOrderFiles" Include="tblOrderFileItems"
        AutoGenerateWhereClause="True" EntityTypeFilter="" Where="" >
    </asp:EntityDataSource>

но я считаю, что это возвращает все столбцы всех строк для каждого элемента заказа. Я только очень хочу Count и не хочу доставлять остальные данные на веб-страницу.

Я также попытался просто добавить it.tblOrderFileItems.Count в оператор Select, но получил сообщение об ошибке

'Count' не является членом 'Transient.collection [MyDBModel.tblOrderFileItem (Nullable = True, DefaultValue =)]'. Чтобы извлечь свойство элемента коллекции, используйте подзапрос для перебора коллекции.

1 Ответ

0 голосов
/ 12 июля 2013
Select="ANYELEMENT(SELECT VALUE Count(c.ItemId) FROM it.tblOrderFileItems AS c) as ChildCount"
...