简体   繁体   English

在Dynamics CRM中加入约会实体的必需与会者和联系人实体

[英]Joining Appointment Entity's Required Attendees and Contact Entity in Dynamics CRM

I wanted to pull programmatically all the appointment entities and the full information of it's required attendees (which in my case always contact type). 我想以编程方式提取所有约会实体及其所需参与者的完整信息(在我的情况下,总是联系类型)。

What is the best way to join between Appointment Entity and Contact Entity based on the Appointment Entity "Required Attendees" attribute? 基于约会实体“必需出席者”属性的约会实体和联系人实体之间最佳的联接方式是什么?

To get the 'Required Attendees', you need to make a join between the Appointment and the ActivityParty entity and then filter based on ParticipationTypeMask which is 5 for 'Required Attendees'. 要获取“必需的与会者”,您需要在AppointmentActivityParty实体之间建立Appointment ,然后根据ParticipationTypeMask进行过滤,其中“必需的与会者”为5。 Further, you need to make a join between the ActivityParty and the Contact entity. 此外,您需要在ActivityPartyContact实体之间建立ActivityParty

Your code could be similar to this: 您的代码可能与此类似:

//Create a query expression specifying the link entity alias 
//and the columns of the link entity that you want to return
QueryExpression qe = new QueryExpression();
qe.EntityName = "appointment";
qe.ColumnSet = new ColumnSet(true);

//LinkEntity for ActivityParty                
var activityParty = new LinkEntity()
{
    EntityAlias = "activityparty",
    JoinOperator = JoinOperator.Inner,
    Columns = new ColumnSet(true),
    LinkFromEntityName = "appointment",
    LinkFromAttributeName = "activityid",
    LinkToEntityName = "activityparty",
    LinkToAttributeName = "activityid",
    LinkCriteria = new FilterExpression
    {
        Conditions =
                   {
                       new ConditionExpression("participationtypemask", ConditionOperator.Equal, 5), //Required Attendees 
                       new ConditionExpression("partyobjecttypecode", ConditionOperator.Equal, 2),   // Contacts
                   }
    }
};

//LinkEntity for Contact                
var contact = new LinkEntity()
{
    EntityAlias = "contact",
    JoinOperator = JoinOperator.Inner,
    Columns = new ColumnSet(true),
    LinkFromEntityName = "activityparty",
    LinkFromAttributeName = "partyid",
    LinkToEntityName = "contact",
    LinkToAttributeName = "contactid",
};

activityParty.LinkEntities.Add(contact);
qe.LinkEntities.Add(activityParty);

//Get the appointments and the Linked Entities
var appointments = _orgService.RetrieveMultiple(qe);

foreach (var appointment in appointments.Entities)
{
    // Do something with the Contact Data 
    var fullname = ((AliasedValue)(appointment["contact.fullname"])).Value.ToString();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM