无法使用crm2011中的sdk更改联系人内的帐户参考

时间:2013-07-05 08:16:29

标签: dynamics-crm-2011 dynamics-crm

我无法通过使用crm 2011 sdk更新联系人来更改客户端。这是我用来执行此操作的代码:

Entity contact = new Entity();
contact.LogicalName = "contact";            
contact.Attributes = new AttributeCollection();            
EntityReference clientLookup = new EntityReference();
clientLookup.Id = NewClientBId;
clientLookup.LogicalName = "account";
contact.Attributes.Add("parentcustomerid", clientLookup);
contact.Attributes.Add("contactid", workItem.Id);
SynchronousUtility.UpdateDynamicEntity(CrmConnector.Service, contact);

代码运行良好,没有任何错误但是当我进入门户网站并检查记录时,它仍然指向旧帐户,但更新了修改时间戳。我还检查了sql profiler查询,显示如下:< / p>

  

exec sp_executesql N'update [ContactBase] set   [ModifiedOn] = @ ModifiedOn0,[ModifiedBy] = @ ModifiedBy0,   [ModifiedOnBehalfBy] = NULL where([ContactId] =   @ ContactId0)',N'@ ModifiedOn0 datetime,@ ModifiedBy0   唯一标识符,@ ContactId0   唯一标识符 '@ ModifiedOn0 =' 2013年7月4日   9时21分02' 秒,@ ModifiedBy0 = '2F8D969F-34AB-E111-9598-005056947387',@ ContactId0 = 'D80ACC4E-A185-E211-AB64-002324040068'

从上面可以看到我更新的列甚至没有在更新查询的set子句中。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

我测试了你的代码并且它有效:

Entity contact = new Entity();
contact.LogicalName = "contact";
contact.Attributes = new AttributeCollection();
EntityReference clientLookup = new EntityReference();
clientLookup.Id = new Guid("3522bae7-5ae5-e211-9d27-b4b52f566dbc");
clientLookup.LogicalName = "account";
contact.Attributes.Add("parentcustomerid", clientLookup);
contact.Attributes.Add("contactid", new Guid("16dc4143-5ae5-e211-9d27-b4b52f566dbc"));

正如您所看到的,我在我的环境中使用了现有的Id,并执行了我使用的更新

service.Update(contact);

您的代码无效的原因:

  • NewClientBId不是正确的帐户Guid
  • workItem.Id不是正确的联系人Guid
  • 函数SynchronousUtility.UpdateDynamicEntity有错误