新ColumnSet(true)不返回查询中的所有列

时间:2013-09-18 10:35:45

标签: c# dynamics-crm-2011

我有一个通常用于从同一个插件中的不同实体返回数据的查询。在查询中,我选择使用新的ColumnSet(true)返回所有列。

在大多数情况下,这没有任何问题,但我只是碰到了一个实体,它没有带回一些领域。这些字段是使用单独的插件计算的,但这些值肯定会显示在记录本身上,因为它们在表单和视图中可见。但是它们不会在查询中返回。

我尝试通过导入来创建自己的记录,我自己设置这些值而不是通过插件。以这种方式完成后会找到这些值,但对于其他记录,它们仍然缺失。

我已经在下面复制了我的查询,以防有人看到它出了问题。

//set up query for entity
                QueryExpression query;
                query = new QueryExpression();
                query.EntityName = entityName;
                query.ColumnSet = new ColumnSet(true);
                query.PageInfo.ReturnTotalRecordCount = true;

                //get the results                    
                EntityCollection SourceRecords = new EntityCollection();

                int pageNumber = 1;
                RetrieveMultipleRequest req;
                RetrieveMultipleResponse resp = new RetrieveMultipleResponse(); ;

                do
                {
                    query.PageInfo.Count = 5000;
                    query.PageInfo.PagingCookie = (pageNumber == 1) ? null : resp.EntityCollection.PagingCookie;
                    query.PageInfo.PageNumber = pageNumber++;

                    req = new RetrieveMultipleRequest();
                    req.Query = query;
                    resp = (RetrieveMultipleResponse)SourceOrgService.Execute(req);
                    SourceRecords.Entities.AddRange(resp.EntityCollection.Entities);
                }
                while (resp.EntityCollection.MoreRecords);

1 个答案:

答案 0 :(得分:0)

查询本身看起来很好,所以你遇到了两个问题之一。

  1. 正在计算值的插件没有被触发,没有更新它计算的值,或者是在当前正在执行的插件之后被触发(当你注册插件步骤时有一个“Rank”值,它控制执行步骤的顺序,这可能是您的问题。需要有关插件步骤及其注册方式的更多信息。)
  2. 您有某种字段级别的安全性,其中插件正在执行的用户,没有计算字段的权限。