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);
我正在同步执行一个插件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);