无法使用 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);
你有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 中的分页查询