0

我无法通过使用 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 查询,显示如下:

exec sp_executesql N'update [ContactBase] set [ModifiedOn]=@ModifiedOn0, [ModifiedBy]=@ModifiedBy0, [ModifiedOnBehalfBy]=NULL where ([ContactId] = @ContactId0)',N'@ModifiedOn0 datetime,@ModifiedBy0 uniqueidentifier,@ ContactId0 uniqueidentifier',@ModifiedOn0='2013-07-04 09:21:02',@ModifiedBy0='2F8D969F-34AB-E111-9598-005056947387',@ContactId0='D80ACC4E-A185-E211-AB64-002324040068'

从上面可以看出,我更新的列甚至不在更新查询的 set 子句中。有人可以帮我吗?

4

1 回答 1

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有错误
于 2013-07-05T10:17:08.000 回答