2016-08-17 2 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을 알아야합니다. 당신이 만족 할 수있는 경우

당신은 코드를 게시하지 못했지만, 당신은 또한 LogicalName를 검색 할 수 있습니다 수신자로부터 ID를 검색 할 수있는 경우 (그들이하는 EntityReference로 저장됩니다) 확인을위한

관련 문제