2012-02-15 59 views
2

我正在使用EntityDataSource并使用CommandText属性创建投影以跨多个表进行查询。我想允许分页,但是当我运行的代码,我得到的是说与EntityDataSource的分页错误

对于EntityDataSource,如果查询指定了投影和 启用分页,排序表达式必须定义一个错误。无论是 OrderBy属性或设置AutoGenerateOrderByClause设置为true

奇怪的事情是,我已经设置了AutoGenerateOrderByClause为true,错误仍然存​​在。我不确定此时该做什么。这是我的示例EntityDataSource代码。

<asp:EntityDataSource runat="server" ID="EntityDataSource" 
    ConnectionString="name=AssetRegistryEntities" 
    DefaultContainerName="AssetRegistryEntities" 
    CommandText="SELECT a.astName, a.astDescription, r.rolFK_adCN 
       FROM AssetRegistryEntities.Assets as a 
       JOIN AssetRegistryEntities.Roles as r ON r.rolFK_astID = a.astID 
       WHERE r.rolFK_adCN = 'dpellerin' 
       AND r.rolTypeCode = 'PRIANALYST'" 
    AutoGenerateOrderByClause="true"> 
</asp:EntityDataSource> 

任何人都知道如何使分页工作与此?

回答

4

你有投影。要么摆脱SELECT或者也添加OrderBy =“it.astID”

+0

这奏效了!不知道我完全理解为什么。必须做更多的阅读。谢谢! – Dana 2012-02-15 17:27:40

1

只是为了澄清AFD接受的答案。

更改EntityDataSource以下几点:

<asp:EntityDataSource runat="server" ID="EntityDataSource" 
    ConnectionString="name=AssetRegistryEntities" 
    DefaultContainerName="AssetRegistryEntities" 
    OrderBy="it.astID" 
    CommandText="SELECT a.astName, a.astDescription, r.rolFK_adCN 
       FROM AssetRegistryEntities.Assets as a 
       JOIN AssetRegistryEntities.Roles as r ON r.rolFK_astID = a.astID 
       WHERE r.rolFK_adCN = 'dpellerin' 
       AND r.rolTypeCode = 'PRIANALYST'" 
    AutoGenerateOrderByClause="true"> 
</asp:EntityDataSource>