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);
コードはエラーなしで正常に実行されますが、Web ポータルにアクセスしてレコードを確認すると、変更のタイム スタンプが更新されていても、まだ古いアカウントを指しています。以下のように表示される SQL プロファイラー クエリも確認しました。
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 句にもありません。