2016-08-17 9 views
1

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); 
        } 
+0

おかげで、しかし、あなたは喜ばことができる場合動的にCRMによって書かれた答えを確認する、彼は最初に書いたそれは正しい –

答えて

4

は、どのように私は、アカウントまたは 連絡先のいずれかであるエンティティタイプを決定することができますか?

PartyIdのタイプはEntityReferenceです。LogicalNameは、関連するエンティティタイプを指定します。

var entityLogicalName = context.EmailSet.FirstOrDefault().To.FirstOrDefault().PartyId.LogicalName 

逆に、それは EntityLogicalNameを知らなくてものPartyIdを設定することが可能でしょうか?

いいえ、CRMエンティティの参照を設定するときは、IdとLogicalNameの両方が必須フィールドです。

+0

upvoted、申し訳ありません私は10秒後にあなたの答えを投稿したが、ブラウザは私に通知しなかった –

3

PartyIdを設定するには、エンティティのLogicalNameを知る必要があります。

あなたはコードを投稿しませんでしたが、あなたは、受信者からのIDを取得することができれば、あなたもLogicalNameを取得することができます(これらは実体参照として格納されている)確認のため

関連する問題