1

一些背景知识:我正在用 C# 为 CRM 2011 编写自定义工作流活动,并且我正在使用由 CrmSvcUtil.exe 生成的早期绑定类。我的插件把一个机会作为它的唯一输入,应该检查它的相关活动,然后在机会上设置一个字段来表示这个机会是否需要更多的跟进。我目前的问题是,每当我尝试检索相关活动时,结果都是null. 这是我的代码的相关部分:
Opportunity currentOpportunity = (Opportunity) service.Retrieve(context.PrimaryEntityName, context.PrimaryEntityId, new ColumnSet(true));
currentOpportunity.Opportunity_ActivityPointers

我的印象是,由于 Opportunity 和 Activity 之间存在一对多的关系,所以这会抓住所有相关的活动,但它似乎并没有这样做。
我还是 CRM 和 C# 的新手,所以任何关于我做错了什么的见解都值得赞赏!

4

1 回答 1

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 如果您需要此集合中的某些特定活动。更多细节在这里

希望能帮助到你 :)

于 2013-03-19T21:56:05.530 回答