Dynamics CRM2011SDKのマージの例を機能させようとしています。 http://msdn.microsoft.com/en-us/library/hh547408.aspx
少し変更しました。アカウントの代わりに2つの連絡先を作成しました(ただし、コード内の一部の変数名は別の方法を示唆している場合があります。たとえば、_account1Idは実際にはcontact1のGUIDです)。
最初の連絡先レコードには、名前、名前、電話のフィールドが入力されています。2番目の連絡先レコードには、名前、名前、および電子メールのフィールドが入力されています。
マージが発生する部分は以下のとおりです。元のコードは上部のリンクから見ることができます。
次の変更を加えて例を実行すると、電子メールアドレスが新しい連絡先レコードにマージされません。私が得たのは、住所データが追加されたが、電子メールがない、レコードの1つからの値との1つのマージされた連絡先です。これは、プライマリレコードの空のフィールドを2番目のレコードの空でないフィールドで埋めるはずだと思いました。
Ms Dynamics CRMを初めて使用するため、多くのグーグルとデバッグを行った後、理由を理解できませんでした。誰かが問題が何であるかについて私にいくつかのフィードバックを与えることができれば私はうれしいです。
前もって感謝します。
_serviceProxy.EnableProxyTypes();
CreateRequiredRecords(); // created two contacts with same name, surname. first record has telephone1 filled, second record has emailaddress filled.
EntityReference target = new EntityReference();
target.Id = _account1Id;
target.LogicalName = Contact.EntityLogicalName;
MergeRequest merge = new MergeRequest();
merge.SubordinateId = _account2Id;
merge.Target = target;
merge.PerformParentingChecks = false;
Contact updateContent = new Contact();
updateContent.Address1_Line1 = "test";
merge.UpdateContent = updateContent;
MergeResponse merged = (MergeResponse)_serviceProxy.Execute(merge);
Contact mergeeAccount =
(Contact)_serviceProxy.Retrieve(Contact.EntityLogicalName,
_account2Id, new ColumnSet(allColumns: true));
if (mergeeAccount.Merged == true)
{
Contact mergedAccount =
(Contact)_serviceProxy.Retrieve(Contact.EntityLogicalName,
_account1Id, new ColumnSet(allColumns: true));
}