Error: Not able to retrieve after create in plugin

Error: Not able to retrieve after create in plugin

我正在同步执行一个插件post操作。 我使用 IOrganizationService.Create 创建了一个实体。这有效,我得到一个 GUID,我可以看到该记录存在于 CRM 中。 在此之后,我正在尝试使用相同的 IOrganizationService 和创建调用返回的 GUID 来检索相同的记录:

public void Execute(IServiceProvider serviceProvider)
    {
        ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
        IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
        IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
        IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
        tracer.Trace("context is " + context.InputParameters["Target"]);
        context.OutputParameters["Message"] = "in plugin";

        if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is EntityReference)
        {
/* some other processing here
.
.
*/
 Guid polId = service.Create(policy);
               Entity polEntity = service.Retrieve("new_customEntiry", polId, new ColumnSet(true));

polEntity.Id 为空。 polEntity["someattribute"] 也为空。

为什么检索调用不起作用?我错过了什么?

相关post:Error Account with Id = "xxxxxx" does not exist

我确定代码中存在您未共享的问题。

可能的根本原因

service.Create(policy) 中用于策略对象的实体应与 service.Retrieve 中使用的 new_customEntiry 相同,检查一下

建议

1.Add 跟踪日志,用于记录 polId 插件跟踪或 profile/debug 以查看
2.Try 异步模式 & 测试相同的插件步骤
3.Don不要检索整个实体对象,而是这样做

Guid polId = service.Create(policy);

Entity toUpdate = new Entity("new_entityToUpdate", entityToUpdateId);
toUpdate["new_customEntiryId"] = new EntityReference("new_customEntiry", polId);
service.Update(toUpdate);