如何在EntityDataSource中添加子表的Count

时间:2011-08-02 19:28:06

标签: entity-framework count entitydatasource

我有一个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)。

我找到了一种通过添加Include指令来使Count工作的方法,如下所示:

    <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 :(得分:0)

Select="ANYELEMENT(SELECT VALUE Count(c.ItemId) FROM it.tblOrderFileItems AS c) as ChildCount"