我在CRM Dynamics 2013中有一个场景,我需要删除数以千计的记录,基本上我有联系人,帐户,销售线索,我需要基本上从联系人中删除所有的营销列表,这样这些联系人就不会收到列表,我想知道哪种方法会是最好的,我想也许如果我创建了一个使用RemoveMemberListRequest的程序,一切都很好,但我如何指定一个查询,基本上说,删除列表中的成员从列表上的联系人有一个所有者设置为“挂起删除”。
我看到这种方法有点令人担忧,因为我计划使用RemoveMemberListRequest,它寻找的guid的EntityId(联系人)和ListID(营销列表)的guid,问题是,有许多列表和许多联系人落在这个criteria.The的重要标准是重点与所有者正在等待删除的联系人,这意味着我没有一个具体的方法来查询那些特定的营销列表中添加了联系人,有等待删除作为所有者字段。我希望这是有意义的,任何帮助都将不胜感激。
请看看我到目前为止都有些什么
public static Entity GetConatctWithPendingDeletion(IOrganizationService service)
{
QueryExpression qe = new QueryExpression();
qe.EntityName = "contact";
qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");// tbhis represents the optionset 'Pending Deletion'
EntityCollection response = service.RetrieveMultiple(qe);
return response.Entities[0];
Console.WriteLine(response.Entities.Count());
Console.ReadLine();
RemoveMemberListRequest req = new RemoveMemberListRequest();
req.EntityId = new Guid("xxxxxxx-xxx-xxx-xxx-xxxxxxx");//how do I specifty a list of Contact guids based on above code
req.ListId = new Guid("xxxxxxx-xxxx-xxxx-xxxxx");// Also here , how do I specify the lists I want,
RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);
}发布于 2015-11-13 16:19:22
您应该能够通过将市场营销列表成员关系实体JOIN到您的帐户/联系人/销售线索查询并迭代结果记录来解决此问题:
QueryExpression qe = new QueryExpression();
qe.EntityName = "contact";
qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");
LinkEntity le = new LinkEntity();
le.EntityAlias = "lm"; // note the alias, you need it when accessing fields of the linked entity
le.Columns = new ColumnSet("listid");
le.JoinOperator = JoinOperator.Inner;
le.LinkFromEntityName = "contact";
le.LinkFromAttributeName = "contactid";
le.LinkToEntityName = "listmember";
le.LinkToAttributeName = "entityid";
eq.LinkEntities.Add(le);
EntityCollection response = service.RetrieveMultiple(qe);
// iterate over list members
foreach (var listmember in response.Entities)
{
RemoveMemberListRequest req = new RemoveMemberListRequest();
req.EntityId = listmember.Id;
// the linked (relationship) entity fields are of type AliasedValue
AliasedValue av = listmember.GetAttributeValue<AliasedValue>("lm.listid");
EntityReference lm = (EntityReference)av.Value;
req.ListId = lm.Id;
RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);
}https://stackoverflow.com/questions/33687754
复制相似问题