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

c# dynamics-crm-2011 contact

317 观看

1回复

20 作者的声誉

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

无法分配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);
作者: Mohsin Tester 的来源 发布者: 2016 年 2 月 22 日

回应 (1)


0

1960 作者的声誉

您有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;
                }
            }

请参阅此处以获取更多详细信息:

https://msdn.microsoft.com/zh-cn/library/gg327917.aspx 使用QueryExpression的页面大结果集

动态CRM 2011中的分页查询

作者: Dot_NET Pro 发布者: 26.02.2016 09:36
32x32