首页 > 解决方案 > PostOperation Create Plugin 需要执行 InitializeFromRequest 并吐出“记录不存在”

问题描述

我开发了一个插件(操作后、创建、同步),它抓取Target并调用InitializeFromRequest以创建另一个从正在创建的记录派生的记录。

这是该方法的精简版本Execute

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);

  var newRecord = (service.Execute(new InitializeFromRequest
  {
    EntityMoniker = new EntityReference(context.PrimaryEntityName, context.PrimaryEntityId),
    TargetEntityName = "my_entityName",
    TargetFieldType = TargetFieldType.ValidForCreate
  }) as InitializeFromResponse).Entity;

}

直到大约几周前,这一直有效。

现在完全相同的插件错误说明my_entity with Id = <guid> does not exist.

我有点明白为什么会发生这种情况,我仍在交易中,并且尚未实际创建记录,因此出现错误。

我怀疑 4 月的更新是罪魁祸首,因为它开始发生在更新大规模部署在所有环境中的时候(我们像往常一样,除非绝对必须更新,否则不会更新,因为更新总是会破坏一堆随机的东西)。

平台处理 Post-Operation Create 插件的方式是否发生了变化?这是我们需要以某种方式规避的另一个无证调整吗?

标签: c#pluginsdynamics-365

解决方案


推荐阅读