2012-02-15 2 views
2

Я использую EntityDataSource и создаю проекцию с использованием свойства CommandText для запроса по нескольким таблицам. Я хочу, чтобы пейджинг, но когда я запускаю код, я получаю сообщение об ошибке, которое говоритОшибка подкачки с EntityDataSource

Для EntityDataSource, если запрос определяет проекцию и подкачки включен, выражение сортировки должно быть определено. Либо установите OrderBy свойство или установить AutoGenerateOrderByClause истинной

Странно то, я поставил AutoGenerateOrderByClause истина и ошибка не будет устранена. Я не уверен, что делать в этот момент. Вот мой пример кода 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

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> 
Смежные вопросы