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
}
}
}
您确定systemuserid
是用于此查询的正确字段名吗?
当涉及到连接时,CRM通常会使用不同的属性名,因为许多实体可能具有相同名称的字段。
例如,它可以是user1.systemuserid
我建议调试代码以检查查询返回的属性-我怀疑您将找到所需的信息。
一天之后别管这个问题。它现在运行完美,没有任何修改…可能是SDK或CRM服务器出了问题,我花了一天的时间才解决@@.