CRM 2011:从QueryExpression中检索多个实体返回的数据,但GetAttributeValue始终为空

本文关键字:数据 GetAttributeValue 返回 实体 2011 QueryExpression 检索 CRM | 更新日期: 2023-09-27 18:07:00

我使用查询表达式通过2个实体(User和Engagement)之间的N:N关系检索相关记录

但是当我继续从查询返回数据。方法实体。属性["systemuserid"]总是返回空白,尽管它有数据。

下面是我的代码:
 QueryExpression query = new QueryExpression(CrmAttributes.EntityName.User);
            query.ColumnSet = new ColumnSet(CrmAttributes.SystemUserAttributes.UserId);
            LinkEntity linkEntityFrom = new LinkEntity(CrmAttributes.EntityName.User,
                CrmAttributes.EntityRelationships.EngagementToSystemUser,
                CrmAttributes.SystemUserAttributes.UserId, CrmAttributes.SystemUserAttributes.UserId,
                JoinOperator.Inner);
            LinkEntity linkEntityTo = new LinkEntity(CrmAttributes.EntityRelationships.EngagementToSystemUser,
                CrmAttributes.EntityName.Engagement,
                CrmAttributes.EngagementAttributes.EngagementId, CrmAttributes.EngagementAttributes.EngagementId,
                JoinOperator.Inner);
            linkEntityFrom.LinkEntities.Add(linkEntityTo);
            query.LinkEntities.Add(linkEntityFrom);
            linkEntityFrom.LinkCriteria = new FilterExpression();
            linkEntityFrom.LinkCriteria.AddCondition(
                new ConditionExpression(CrmAttributes.EngagementAttributes.EngagementId, ConditionOperator.Equal, id));
            var results = service.RetrieveMultiple(query);

 foreach (var entity in results.Entities)
      { 
            if(entity.Attributes.Contains(CrmAttributes.SystemUserAttributes.UserId)) {
                Guid userGuid = entity.Attributes[CrmAttributes.SystemUserAttributes.UserId]  //systemuserid
                tracer.Trace("Guid: " + userGuid);      // Always blank 
           }
       }

但是当我使用KeyValuePair来获取数据。数据正是我想要的

 foreach (var entity in results.Entities)
                { 
                    Guid userGuid = new Guid();
                    foreach (KeyValuePair<string, object> attribute in entity.Attributes)
                    {
                        if (attribute.Key == CrmAttributes.SystemUserAttributes.UserId)
                        {
                            userGuid = (Guid)attribute.Value;
                            tracer.Trace("Guid: " + userGuid); //Return expected data
                        }
                    }
                }

CRM 2011:从QueryExpression中检索多个实体返回的数据,但GetAttributeValue始终为空

您确定systemuserid是用于此查询的正确字段名吗?

当涉及到连接时,CRM通常会使用不同的属性名,因为许多实体可能具有相同名称的字段。

例如,它可以是user1.systemuserid

我建议调试代码以检查查询返回的属性-我怀疑您将找到所需的信息。

一天之后别管这个问题。它现在运行完美,没有任何修改…可能是SDK或CRM服务器出了问题,我花了一天的时间才解决@@.