今天来看看另外一个比较有意思的API: RetrieveEntityRequest, 在讨论该API之前,我们先来设想这样一个场景。如果我们想要获取最近3天修改过的记录,我们应该怎么做呢?
安装传统的处理方式,我们应该生成一个查询,并将ModifiedOn >= 前3天,作为过滤条件对数据进行查询。但是这样的做法是有些麻烦的问题,比如:时区,查询粒度太大容易漏数据。
在新系统中,我们可以使用RetrieveEntityRequest去查询最近被修改过的记录,这里我们只要为其传入一个Token,则该API则会返回所有在这个Token之后发生修改的记录。使用该API,我们能很好的避免传统方法的不足,并且也能十分方便的去轮询最新更改过的记录。
我们来看看怎么使用该API吧,首先,我们需要打开实体的Retrieve Change设置,否则不能调用该API。
代码片段
RetrieveEntityChangesRequest req = new RetrieveEntityChangesRequest();
req.Columns = new ColumnSet(true);
req.EntityName = "account";
req.PageInfo = new PagingInfo() { Count = 5000 };
req.DataVersion = "513315!07/04/2015 06:05:39";
RetrieveEntityChangesResponse rep = CrmSvc_Online.Execute(req) as RetrieveEntityChangesResponse;
DataVersion则是Token,我们需要做的事情是在每次调用该API后,将该Token保存,将其作为下次调用该API的输入参数。这样我们就能保存,每次都能获取最新的变更数据。