Показать сообщение отдельно
Старый 15.08.2008, 08:19   #1  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
! Проблема - Запрос с параметром
Стоит задача сделать выборку по Бизнес-партнерам, если атрибут "accountnumber" входит в список кодов (строковый массив).

Реализовал след. образом:

Код:
string fetch1 = @"<fetch mapping='logical'><entity name='" + entityName + @"'><all-attributes/></entity></fetch>";
        FetchXmlToQueryExpressionRequest req = new FetchXmlToQueryExpressionRequest();
        req.FetchXml = fetch1;
        FetchXmlToQueryExpressionResponse resp = (FetchXmlToQueryExpressionResponse)_CrmService.Execute(req);
        QueryExpression fetchQuery = resp.Query;
        fetchQuery.EntityName = entityName;
        fetchQuery.ColumnSet.AddColumn("modifiedon");

        ConditionExpression condition = new ConditionExpression();
        condition.AttributeName = "accountnumber";
        condition.Operator = ConditionOperator.In;
        condition.Values = codes;

        fetchQuery.Criteria.AddCondition(condition);
        
        RetrieveMultipleRequest fetchQueryReq = new RetrieveMultipleRequest();
        fetchQueryReq.Query = fetchQuery;
        fetchQueryReq.ReturnDynamicEntities = true;

        RetrieveMultipleResponse fetchQueryResp;

        QueryExpressionToFetchXmlRequest expression = new QueryExpressionToFetchXmlRequest();
        expression.Query = fetchQuery;
        userquery userquery = new userquery();

        try
        {
          fetchQueryResp = (RetrieveMultipleResponse)_CrmService.Execute(fetchQueryReq);
        }
        catch (Exception ex)
        {
          throw ex;
        }
Обратите внимание что используется класс ConditionExpression - экземпляр codes для параметризованного запроса.

Так вот:
  • Если размер массива Codes примерно до 2000 элементов - все работает нормально.
  • Если же размер массива превышает примерно 2000 (например 5900), то во время выполнения запроса вылетает Exception - Server unable to process request.

Вопрос, что за ограничение такое? и где его можно снять?