如何检索 Dynamics 365 Activity 任务记录中描述字段的当前值?

How to retrieve the current value of the description field in Dynamics 365 Activity Task record?

我有一个 Dynamics 365 Activity 任务记录,其中包含一个值为 "Test Description Value" 的描述。我想在插件中检索这个值。

我的主要代码概述如下。

public void Execute(IServiceProvider serviceProvider)
{
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService((typeof(IPluginExecutionContext)));
    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = factory.CreateOrganizationService(context.UserId);
    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
    {
        Entity task = (Entity)context.InputParameters["Target"];
        if (task.LogicalName == "task")
        {
            ColumnSet cs = new ColumnSet(new string[] { "description", "ownerid" });
            service.Retrieve("task", task.Id, cs);
            foreach (KeyValuePair<String, Object> attribute in task.Attributes)
            {
                tracingService.Trace(attribute.Key + ": " + attribute.Value);
            }
        }
    }
}

迭代 foreach 循环显示 task.Attributes 不包含描述的键,我也无法使用 task["description"] 获取描述的当前值。 return 和 System.Collections.Generic.KeyNotFoundException.

是否可以获取插件中Activity任务记录描述字段的当前值?如何?

您将进行显式服务调用以检索额外的任务实体属性,但缺少一个简单的属性。

Entity wholeTask = service.Retrieve("task", task.Id, cs);

并且在迭代循环中,使用这个检索到的实体而不是目标实体。

foreach (KeyValuePair<String, Object> attribute in wholeTask.Attributes)

如果你愿意,你也可以使用原像,这将避免再次调用 SDK。