MSCRM Retrieve Multiple PlugIn限制了其他Retrievemultiple项

时间:2018-07-29 23:42:46

标签: plugins dynamics-crm crm dynamics-crm-365

在我的场景中,Annotation有一个插件(检索多个)。该插件不只是BLOB Storage解决方案(用于Microsoft提供的附件管理解决方案)的一部分。因此,很明显,在我们的CRM中,正在使用 MicrosoftlLabsAzureBlobstorage

现在,我正在执行一个控制台应用程序,该应用程序通过查询表达式检索多个注释。当它尝试获取约500或600的记录时,它抛出以下错误。

  

{该插件执行失败,因为当前没有沙盒主机   可用。请检查您是否配置了Sandbox服务器,并且   \ r \ nSystem.ServiceModel.CommunicationException:   Microsoft Dynamics CRM遇到错误。参考编号   管理员或支持人员:#AFF51A0F“}

当我获取特定记录或更少的记录时,它执行得很好。

所以,我的问题是Rerieve Multiple Query的数量是否有限制?如果是否存在restoremultiple插件?

还有其他我找不到的线索吗?

1 个答案:

答案 0 :(得分:1)

要解决此冲突,您可能希望在控制台应用程序代码中尝试检索较小的批注页面(一次说50个),并循环浏览所有页面以进行处理。

This article提供了用于分页QueryExpression的示例代码。

这是该示例的简化版本:

// The number of records per page to retrieve.
int queryCount = 3;
// Initialize the page number.
int pageNumber = 1;
// Initialize the number of records.
int recordCount = 0;

// Create the query expression
QueryExpression pagequery = new QueryExpression();
pagequery.EntityName = "account";
pagequery.ColumnSet.AddColumns("name", "emailaddress1");                   

// Assign the pageinfo properties to the query expression.
pagequery.PageInfo = new PagingInfo();
pagequery.PageInfo.Count = queryCount;
pagequery.PageInfo.PageNumber = pageNumber;

// The current paging cookie. When retrieving the first page, 
// pagingCookie should be null.
pagequery.PageInfo.PagingCookie = null;

while (true)
{
    // Retrieve the page.
    EntityCollection results = _serviceProxy.RetrieveMultiple(pagequery);
    if (results.Entities != null)
    {
        // Retrieve all records from the result set.
        foreach (Account acct in results.Entities)
        {
            Console.WriteLine("{0}.\t{1}\t{2}", ++recordCount, acct.Name,
                               acct.EMailAddress1);
        }
    }

    // Check for more records, if it returns true.
    if (results.MoreRecords)
    {
        // Increment the page number to retrieve the next page.
        pagequery.PageInfo.PageNumber++;

        // Set the paging cookie to the paging cookie returned from current results.
        pagequery.PageInfo.PagingCookie = results.PagingCookie;
    }
    else
    {
        // If no more records are in the result nodes, exit the loop.
        break;
    }
}

This page有更多信息和另一个示例。