无法使用 C# 在动态 CRM 中分配托管内存

本文关键字:分配 内存 CRM 动态 | 更新日期: 2023-09-27 18:35:37

我在Dynamics CRM中1,072,369了联系人记录。我需要检索它们,然后进行操作。现在,在检索时,我遇到了以下异常

无法分配 1073741824 字节的托管内存缓冲区。可用内存量可能较低。

我将其时间跨度增加到 10 分钟,但没有运气。

我正在寻求您的建议/帮助来解决它。以下是我的代码片段。

ColumnSet col = new ColumnSet();
col.AddColumns("new_name", "accountid", "contactid");
                //get Related Record
                QueryExpression qe = new QueryExpression
                {
                    EntityName = entity,
                    ColumnSet = col,
                    Criteria = new FilterExpression
                    {
                        Conditions = { 
                        new ConditionExpression("accountid",ConditionOperator.NotNull),
                        new ConditionExpression("statecode",ConditionOperator.Equal,0)
                    }
                    }
                };
                EntityCollection ec = sp.RetrieveMultiple(qe);

无法使用 C# 在动态 CRM 中分配托管内存

你有1,072,369,所以我建议你批量检索这些记录。您可以尝试以下代码段进行尝试,如果它有助于检索记录。

            QueryExpression qe = new QueryExpression
            {
                EntityName = entity,
                ColumnSet = col,
                Criteria = new FilterExpression
                {
                    Conditions = { 
                    new ConditionExpression("accountid",ConditionOperator.NotNull),
                    new ConditionExpression("statecode",ConditionOperator.Equal,0)
                }
                }
            };
            qe.PageInfo = new PagingInfo();
            qe.PageInfo.PagingCookie = null;
            qe.PageInfo.PageNumber = 1;
            qe.PageInfo.Count = 500;
while (true)
            {
                EntityCollection results= sp.RetrieveMultiple(qe);
                if (results.Entities != null)
                {
                }
                // Check for more records, if it returns true.
                if (results.MoreRecords)
                {
                    Console.WriteLine("'n****************'nPage number {0}'n****************", pagequery.PageInfo.PageNumber);
                    Console.WriteLine("#'tAccount Name't'tEmail Address");
                    // 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;
                }
            }

有关更多详细信息,请参阅此处:

使用 QueryExpression https://msdn.microsoft.com/en-us/library/gg327917.aspxPage 大型结果集

动态 CRM 2011 中的分页查询