2013-02-06 3 views
0

이 오류가 발생합니다. 내가 CRM 2011 유효한 페이징 쿠키가있는 쿼리는이 전략에서 실행하면 안됩니다.

self.loadWorkItems = function() { 

     var user = self.user(); 
     var bid = user.BusinessUnitId.Id(); 
     var systemUserId = user.SystemUserId(); 
     var results = new Array(); 


     SDK.REST.retrieveMultipleRecords(
      "QueueItem", 
      "$select=*&$skip=" + self.page() * self.pageSize() + "&$top=" + self.pageSize() + "&$orderby=CreatedOn asc&$filter=OwningBusinessUnit/Id eq guid'" + bid + "' and StateCode/Value eq 0", 
      function (r) { 
       results = results.concat(r); 
      }, 
      function (error) { 
       self.lastError(error.message); 
      }, 
      function (x) { 
       for (var i = 0; i < results.length; i++) { 
        var item = results[i]; 
        var r = ko.mapping.fromJS(item, workItemMapping); 
        self.workQueue.push(r); 
       } 
      } 
     ); 
    }; 

CRM 2011 년 WebResource에서이 코드를 호출 할 때

Error : 500: Internal Server Error: Queries with valid paging cookie should not be executed in this strategy

이는 knockoutjs 뷰 모델의 일부입니다. 나는 "More"버튼을 만들어 서버에서 다음 페이지의 데이터를 가져와 표시되는 목록의 끝에 던지려고합니다.

페이지가 제대로로드되고 첫 번째 페이지가 돌아 오지만 다음 페이지가 요청되면이 오류가 발생합니다.

오류없이 전화를 거는 방법에 대한 아이디어가 있으십니까? 내가 잘못했다

EDIT $ 일부 통화> 0 작업을 건너 뛸 것으로 보인다. 여기에 미쳤어.

편집

나는,이 오류가 (내가 기대하는 것처럼) 나 스킵/상단 콤보가 대신 나에게 아무것도 제공하지의 총 레코드 수보다 더 것을 말하려고 무슨 생각 그것은 예외를 던지고있다.

그래서이 새로운 어리 석음을 피하는 방법은 무엇입니까? 이제는 모든 기록을 세어보고 너무 많이 기록하지 않도록해야합니다.

+0

당신은 궤도에 오른 것처럼 들린다. 결과 집합을 모른 채이 작업을 실행하는 경우 Count 쿼리를 먼저 실행 한 다음 Count 결과의 크기를 기반으로이 쿼리를 실행할 수 있습니다. –

답변

0

xrm linq 공급자와 동일한 문제가있어 지금까지 답변을 찾지 못했습니다. 너 운 좋았 니?

여기 내 상황입니다 : 대답으로이 작성을위한 http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/3108541f-d180-4adb-8569-8101f4616f5f/

죄송합니다, 코멘트에 대한 포인트가 없습니다.

+0

Odata 제공 업체에서 제대로 지원되지 않는다고 생각합니다. 페이징을 얻으려면 fetchXml 쿼리를 수행해야한다. – Peter

+0

그러나 그것은 .Skip() 및 .Take()를 지원합니다. 그리고 때때로 * 작동합니다. 나에게 벌레처럼 들린다. – Ninjarabbi

+0

내가 알아 차린 것은 Skip이 0 인 경우에만 Take를 지원한다는 것입니다. – Peter

0

존재하지 않는 "페이지"를 가져옵니다. 기본적으로 결과보다 더 많은 요소를 건너 뜁니다.

그래서 당신은이 상황을 얻을 전체에 기본이되는 결과가 당신의 필터와 일치하는 10 개 개의 레코드가 있고

query.skip (12)라고 말할 수 있습니다.

1

SDK는 건너 뛰기에 버그가있어 질의를 수행 할 때 의도적으로 모든 오류를 잡아냅니다. 그러면 건너 뛸 때 문제를 일으키는 linq 쿼리가 항목에 항목이 있습니다. 내가 알기로는 아직까지는 마이크로 소프트가이 문제를 해결하지 못했다.