Этот провайдер поддерживает пропустить только по заказанным запросам?

Я получаю следующее сообщение об ошибке ... Этот провайдер поддерживает пропустить только по заказанным запросам, возвращающим сущности или проекции, которые содержат все столбцы идентификаторов, где запрос представляет собой запрос с одной таблицей (без объединения) или представляет собой операцию Distinct, Except, Intersect или Union (не Concat).

  
      

       


Protected Sub ldsPriceListByModel2_Selecting(sender As Object, e As  System.Web.UI.WebControls.LinqDataSourceSelectEventArgs) Handles ldsPriceListByModel2.Selecting
      If Not IsPostBack Then
           Dim sd As SessionData = Session("SessionData")
           sd.CmpCode = "95102"
           Dim cmpCode = sd.CmpCode
           Dim interimResult = dataUtil.GetQueryablePriceList(cmpCode)

           e.Result = interimResult.Where(Function(m) m.EngineModel = ddlModels.SelectedValue).OrderBy(Function(o) o.EngineSpec)
      End If

 End Sub

                Public Class DataUtils

                Private dc As DataAccess

                 Public Function GetQueryablePriceList(cmpCode As String) As IQueryable(Of PriceInfo)

  dc = New DataAccessClass(ConfigurationManager.ConnectionStrings("xxx").ConnectionString.ToString())

      Dim PriceListQuery = (From ms In dc.dbo.v_ModelSpecs
              Join pl In dc.dbo.v_pricelists
              On ms.item_no Equals pl.item_no
              Join ci In dc.dbo.cxabcx_VWs
              On pl.accounttypecode Equals ci.AccountTypeCode
              Where (pl.price <> 0 And ci.cmp_code = cmpCode)
          Select New PriceInfo() With {.EngineModel = ms.Model,
                                       .EngineSpec = ms.item_no,
                                       .NewOrRebuilt = IIf(pl.item_desc_1 = "ENGINE - NEW", "N", "R"),
                                       .RetailPrice = pl.price, .DistributorPrice = pl.disc_price,  .CorePrice = pl.sls_price}).AsQueryable()

      Return PriceListQuery
 End Function

Public Class PriceInfo

 Public Sub New()

 End Sub

 Public Property EngineModel As String

 Public Property EngineSpec As String

 Public Property NewOrRebuilt As Char

 Public Property RetailPrice As Decimal

 Public Property DistributorPrice As Decimal

 Public Property CorePrice As Decimal

End Class

Это классический сценарий по многим сценариям, одна модель двигателя с множеством характеристик двигателя ... gridview, управляемая выбором ключа из выпадающего списка (ddlModels). Выберите модель двигателя, вы получите информацию о прейскуранте в таблице gridview. Мои запросы LINQ изолированы в классе доступа к данным, называемом DataUtils. В событии выбора для LINQDATASOURCE (lds) я присваиваю свойство e.Results результат исходного запроса, но отфильтровывая его (WHERE) с помощью EngineModel, выбранного конечным пользователем через ddlModels. В gridview только Pagin включен НЕ СОРТИРОВАТЬ. Почему я должен получать это сообщение об ошибке?

2
nl ja de

2 ответы

Короткий ответ: похоже, вы столкнулись с ограничением объекта linqdatasource. Возможно, вам придется попробовать вручную привязать и не использовать источник данных. Я часто избегаю LinqDataSource в большинстве случаев, если только не имею дело с простым сопоставлением плоских таблиц.

В качестве альтернативы вы можете попробовать добавить атрибут в столбцы в определении объекта PriceInfo, но этот параметр не проверен.

You may want to check out the suggestions in various forum postings from this search: http://www.bing.com/search?q=%22This+provider+supports+Skip+only+over+ordered+queries+returning+entities+or+projections+that+contain+all+identity+columns%22&qs=n&form=QBRE&pq=%22this+provider+supports+skip+only+over+ordered+queries+returning+entities+or+projections+that+contain+all+identity+columns%22&sc=0-0&sp=-1&sk=

1
добавлено

Я бы заменил этот запрос Linq на SQL хранимой процедурой, которая параметризована для извлечения данных. Поскольку SP может запрашивать данные в представлениях, он должен работать.

Либо это, либо падение DevExpress все вместе

1
добавлено
На самом деле проблема НЕ используется DevExpress. Элемент управления DevExpress LinqServerModeDataSource может обрабатывать пейджинг и сортировку в сочетании с их контроллером dx: ASPxGridView ... e.QueryableSource = whatever_the_hell_your_linq_query делает нечто вроде :)
добавлено автор dannyrosalex, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)