Dynamics CRM 2011を使用しています。私はActivityPartysについて学習しています。PartyIdのEntityタイプはどのようにして決定できますか?
ActivityPartyのPartyIdがEntityReferenceであるため、PartyIdを設定するには、エンティティタイプを知る必要があります。
私は、既存の電話と同じ受信者を使用して(プラグインで)新しいPhoneCallを作成しようとしています。 ActivityPartySetからLINQを使用して受信者のPartyId Guidを取得できますが、アカウントまたは連絡先のいずれかのエンティティタイプをどのようにして決定できますか?
逆に、EntityLogicalNameを知らなくてもPartyIdを設定できますか?
アップデート:私はどちらかを誤解したり、私が把握しようとしているものを誤解して対応するための
感謝。ここに私のコードがあります:
// Get the oldPhoneCall's To ActivityParty list:
EntityCollection Recipients = oldPhonecall.GetAttributeValue<EntityCollection>("to");
// Use the first one to find the partyId
// Need to do it this way because we don't know if partyId points to an Account or a Contact:
Guid activityPartyId = Recipients.Entities[0].Id;
var activityParty2 = new Xrm.ActivityParty();
context.GetWorkflowHelper().serviceContext.ClearChanges();
var queryParty = from ap in context.GetWorkflowHelper().serviceContext.ActivityPartySet
where ap.ActivityPartyId.Equals(activityPartyId)
select new { ap.PartyId, ap.LogicalName };
foreach (var party in queryParty)
{
activityParty2.PartyId = new EntityReference(party.LogicalName, party.PartyId.Id);
}
私はforeachで、party.LogicalNameがActivityPartyであることがわかりました。これはoldphonecallの受信者のエンティティタイプではなく、私のテストケースではContactですが、他のケースではAccountです。
エンティティの論理名はどのようにして決定されますか?どこが間違っていたのですか?
アップデート2:SQLで
私はフィールドPartyObjectTypeCodeを見ることができると私はエンティティタイプ(1 =アカウント、2 =連絡先など)にそれをマップすることができます知っているが、私はActivityPartySet、そのようなを問い合わせますフィールドが存在するようです。
アップデート3:
がそれを手に入れた -
foreach (var party in queryParty)
{
activityParty2.PartyId = new EntityReference(party.PartyId.LogicalName, party.PartyId.Id);
}
おかげで、しかし、あなたは喜ばことができる場合動的にCRMによって書かれた答えを確認する、彼は最初に書いたそれは正しい –