Ошибка: не удалось получить после создания в плагине - PullRequest
0 голосов
/ 01 ноября 2018

Я выполняю плагин синхронно после операции. Я создаю сущность, используя IOrganizationService.Create. Это работает, я получаю GUID и вижу, что запись существует в CRM. Сразу после этого я пытаюсь получить ту же запись, используя тот же IOrganizationService и GUID, возвращенный вызовом create:

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"] также является нулевым.

Почему не работает вызов извлечения? Чего мне не хватает?

Похожие записи: Ошибка Аккаунт с Id = "xxxxxx" не существует

1 Ответ

0 голосов
/ 02 ноября 2018

Я уверен, что в коде есть проблемы, которыми вы не поделились.

Возможная корневая причина :

Сущность, используемая для объекта политики в service.Create(policy), должна совпадать с new_customEntiry, которая использовалась в service.Retrieve, отметьте ее

Рекомендации

1.Добавьте журнал трассировки, чтобы зарегистрировать polId в трассировке плагина или профиле / отладить его, чтобы увидеть
2. Попробуйте асинхронный режим и протестируйте тот же шаг плагина
3. Не извлекайте весь объект сущности, вместо этого сделайте это

Guid polId = service.Create(policy);

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