3

Microsoft CRM で連絡先を統合しようとして、次のコードを使用しています -

//c1ID and c2ID are GUIDs of duplicated contacts.

EntityReference target = new EntityReference();
target.LogicalName = Contact.EntityLogicalName;

target.Id = c2ID;

MergeRequest merge = new MergeRequest();
// SubordinateId is the GUID of the account merging.

merge.SubordinateId = c1ID;
merge.Target = target;
merge.PerformParentingChecks = true;

Contact updater = new Contact();
Contact updater2 = new Contact();

updater = (Contact)xrmSvc.ContactSet.Where(c => c.ContactId.Equals(c1ID)).First();
updater2 = (Contact)xrmSvc.ContactSet.Where(c => c.ContactId.Equals(c2ID)).First();

MergeResponse mergedR = (MergeResponse)xrmSvc.Execute(merge);

ここで Execute 呼び出しを試みると、このエラーが発生します -

取得の列セットに子属性を指定できません。属性: owneridname。

何かを正しく設定していませんか?

4

3 に答える 3

1

これに関するドキュメントがあればいいのですが、公式ドキュメントUpdateContentはオプションであると記載されていますが、実際には必要であることが経験から証明されています。MergeRequest私がテストしたs では、常にそのプロパティを要求に含めています。Dynamics 3.0の MSDN フォーラムには、同じことを示唆する投稿があります。

実際、割り当てられていない 組織内の 2 つの取引先責任者をマージしようとすると、実際には次のようなメッセージが表示されます。UpdateContentFaultException

必須フィールド「UpdateContent」がありません

ドキュメントにはオプションと書かれていますが!

UpdateContentしたがって、以下のようにプロパティに何かを設定し、それが機能するかどうかを確認することをお勧めします。

var merge = new MergeRequest
{
    // SubordinateId is the GUID of the account merging.

    SubordinateId = c1ID,
    Target = target,
    PerformParentingChecks = true,
    UpdateContent = new Contact()
};
于 2012-10-16T18:03:22.827 に答える