You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CRM D365:插件更新多态查找字段未生效,求排查方法

多态查找字段更新失效的排查步骤

先梳理你代码里的潜在问题,按优先级逐一排查:

  • 字段名拼写错误:你代码里的my_ploymorphiclookupid存在拼写错误(正确应为polymorphic),如果字段实际逻辑名称是my_polymorphiclookupid,这个错误会直接导致更新不生效。先去解决方案里确认字段的逻辑名称,必须完全匹配。

  • 缺少多态类型字段赋值:Dynamics 365的多态查找字段由两个属性组成:

    • 存储ID的字段:比如my_polymorphiclookupid
    • 存储实体类型的字段:通常为my_polymorphiclookupidtype(后缀加type)
      仅赋值ID字段的话,系统无法识别引用指向的实体类型,更新自然无效。补充代码:
    destinationEntity["my_polymorphiclookupidtype"] = "my_entity1";
    
  • 验证目标记录ID有效性:确认myBookingGuid对应的bookableresourcebooking记录确实存在,且当前插件执行用户拥有该记录的写入权限。

  • 检查服务实例与上下文:确保organizationService是插件上下文提供的有效实例(比如context.OrganizationService),而非权限不足的自定义实例。

  • 排查异常吞吃问题:给代码添加try-catch块,捕获并输出异常信息——很多更新失败是因为未被捕获的错误(如字段权限不足、记录不存在、实体引用无效等):

    try
    {
        var entity1Id = "af435c64-a264-4f2a-9cee-22069ce36b3c";
        var destinationEntity = new Entity("bookableresourcebooking", new Guid(myBookingGuid));
        destinationEntity["my_polymorphiclookupid"] = new EntityReference("my_entity1", new Guid(entity1Id));
        destinationEntity["my_polymorphiclookupidtype"] = "my_entity1"; // 补充类型字段
        organizationService.Update(destinationEntity);
    }
    catch (Exception ex)
    {
        tracingService.Trace("Update failed: {0}", ex.ToString());
        throw; // 重新抛出异常,让系统记录错误详情
    }
    
  • 确认多态字段支持目标实体:检查my_polymorphiclookupid字段的配置,确认my_entity1已被添加为该多态字段允许引用的实体类型,否则系统会拒绝更新。

内容的提问来源于stack exchange,提问作者Ramu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:15:35