MS CRM:分页cookie错误?

时间:2018-06-16 15:38:11

标签: sql-server cookies dynamics-crm

根据此article,在Microsoft CRM中如何管理分页cookie存在严重错误。简而言之,当尝试以一对多关系检索超过5000条记录时,会出现错误。作者声明,由于父实体不包含唯一的guid,因此分页cookie也不会是unqiue,这可能导致在检索下一页记录时有大量记录丢失。

有没有人遇到过这个错误?你是怎么绕过它的?

当然,一种方法是将查询转为使用子实体作为主要实体。通过这种方式,每条记录都将是独一无二的。但这不是最佳解决方案,因为我必须在代码中手动更改它。

我注意到的另一种方式是,当我在子实体上指定这样的顺序时:linkedEntity.Orders.Add(OrderType.Ascending),那么分页cookie将始终为空。这消除了记录丢失的问题,但据我了解,这会导致SQL中的大量开销。

最好的方法当然是如果有任何方法可以使分页cookie同时包含父记录和子记录。但我还没有找到任何办法。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我经历过这个。

我只是不使用分页cookie来处理它,你仍然可以在没有它的情况下正确地进行分页。

例如:

int fetchCount = 3;
int pageNumber = 1;
int recordCount = 0;

QueryExpression pagequery = new QueryExpression("account");

while (true)
{
    EntityCollection results = _serviceProxy.RetrieveMultiple(pagequery);

    if (results.Entities != null)
    {
        foreach (Account acct in results.Entities)
        {
            Console.WriteLine(acct.Id);
        }
    }

    if (results.MoreRecords)
    {
        pagequery.PageInfo.PageNumber++;

        //pagequery.PageInfo.PagingCookie = results.PagingCookie; <-- Don't add the paging cookie here
    }
    else
    {
        break;
    }
}