Dynamics 365-为什么查到的Record的Id是Guid初始值

  通过代码查询CRM数据,这个是开发经常会碰到的情况,获取返回的EntityCollection之后,我们会拿Entity.Id做进一步操作。笔者最近碰到的情况,是Entity.Id是个初始值。先上一段FetchXml:

private string FetchAccountFromContact = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +
    "<entity name='account'>" +
      "<attribute name='name' />" +
      "<attribute name='new_bdrassigned' />" +
      "<attribute name='ownerid' />" +
      "<order attribute='name' descending='false' />" +
      "<link-entity name='contact' from='parentcustomerid' to='accountid' link-type='inner' alias='ac'>" +
        "<filter type='and'>" +
          "<condition attribute='contactid' operator='eq' value='{0}' />" +
        "</filter>" +
      "</link-entity>" +
    "</entity>" +
  "</fetch>";

查询Code:

FetchAccountFromContact = string.Format(FetchAccountFromContact, contactId);
FetchExpression expression = new FetchExpression(FetchAccountFromContact);
EntityCollection accounts = service.RetrieveMultiple(expression);

这套查询操作,初看没什么问题,但是当用最后的accounts,来做进一步的处理的时候,问题来了:

Id是Guid的初始值,并不是我们期望的真正的Record的Id。

问题原因:

在FetchXml那里,我们还需要加一个attribute,就是accountid。

private string FetchAccountFromContact = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +
    "<entity name='account'>" +
      "<attribute name='name' />" +
      "<attribute name='accountid' />" +
      "<attribute name='new_bdrassigned' />" +
      "<attribute name='ownerid' />" +
      "<order attribute='name' descending='false' />" +
      "<link-entity name='contact' from='parentcustomerid' to='accountid' link-type='inner' alias='ac'>" +
        "<filter type='and'>" +
          "<condition attribute='contactid' operator='eq' value='{0}' />" +
        "</filter>" +
      "</link-entity>" +
    "</entity>" +
  "</fetch>";

然后再次查询就会发现Id有值了

猜你喜欢

转载自www.cnblogs.com/yobyron/p/9282788.html