一些背景知识:我在C#中为CRM 2011编写自定义工作流活动,并且我正在使用CrmSvcUtil.exe生成的早期绑定类。我的插件将机会作为其唯一的输入,并且应该检查其相关活动,然后在机会上设置一个字段来表示机会是否需要更多的后续操作。我目前的问题是,每当我尝试检索相关活动时,结果为null
。这是我的代码的相关部分:
Opportunity currentOpportunity = (Opportunity) service.Retrieve(context.PrimaryEntityName, context.PrimaryEntityId, new ColumnSet(true));
currentOpportunity.Opportunity_ActivityPointers
我的印象是,由于机会与活动之间存在一对多的关系,这将抓住所有相关活动,但它似乎并没有这样做。
我还是CRM和C#的新手,所以对我做错的任何见解都表示赞赏!
答案 0 :(得分:2)
如果您使用早期绑定类,首先创建数据上下文(在我的情况下,它是 XrmServiceContext )。您可以检索所有ActivityPointers,其中对象是您的商机。
OrganizationServiceProxy orgserv;
using(var xrm = new XrmServiceContext(orgserv))
{
//Opportunity currentOpportunity = ...
IQueryable<ActivityPointer> activityPointers = xrm.ActivityPointerSet.Where(a =>
a.RegardingObjectId == currentOpportunity.ToEntityReference());
}
如果您需要此集合中的某些特定活动,ActivityPointer包含ActivityId和ActivityTypeCode。更多详情here。
希望有所帮助:)