|
|
#1 |
|
Участник
|
Стоит задача сделать выборку по Бизнес-партнерам, если атрибут "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;
}Так вот:
Вопрос, что за ограничение такое? и где его можно снять? |
|
|
|
|
#2 |
|
Moderator
|
Надо включить трассировку и посмотреть подробнее что это за ошибка. Вариантов может быть много - ограничение на длинну запроса или даже ограничение SQL сервера...
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
|
|
#3 |
|
Злыдни
|
Думаю, что проблема в том, что
condition.AttributeName = "accountnumber"; condition.Operator = ConditionOperator.In; condition.Values = codes; транслируется примерно в select ... where accountnumber in (код1, код2, код3), а т.к. у SQL сервера есть ограничение на длину запроса (8 кб по-моему) на больших списках всё падает. Как вариант, если у Вас такие длинные списки кодов, создайте в базе сущности для их хранения и доставайте Ваши сущности через JOIN. |
|
|
|
|
#4 |
|
Участник
|
Пока реализовал так, массив codes делить на пачки, чтобы несколько раз посылать запрос - вроде заработало.
|
|
|