Стоит задача сделать выборку по Бизнес-партнерам, если атрибут "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.
Вопрос, что за ограничение такое? и где его можно снять?