CRM 2011: как обновить запись в плагине Create? - PullRequest
5 голосов
/ 17 ноября 2011

У меня серьезные проблемы с обновлением только что созданной записи некоторыми дополнительными данными.

Дело: у меня смс активность. На создание записи смс. Плагин срабатывает, чтобы действительно отправить смс. Сторонний поставщик смс заботится об отправке и возвращает строку состояния. Основываясь на этой строке, статус для смс должен быть обновлен.

Вот мой код:

public void Execute(IServiceProvider serviceProvider)
{
  IPluginExecutionContext context = (IPluginExecutionContext)
  serviceProvider.GetService(typeof(IPluginExecutionContext));

  IOrganizationServiceFactory serviceFactory = 
    (IOrganizationServiceFactory)serviceProvider.GetService(
      typeof(IOrganizationServiceFactory));
  IOrganizationService service = 
    serviceFactory.CreateOrganizationService(context.UserId);
  aContext orgContext = new aContext(service);

  Entity sms = (Entity)context.InputParameters["Target"];
  /// logic goes here

  sms.StatusCode = new OptionSetValue(statuscode); //statuscode is integer
  service.Update(sms);
}

Я получаю ошибку в плагине каждый раз, когда я запускаю плагин. Может кто-нибудь помочь и объяснить мне, что я здесь делаю неправильно?

Спасибо!

1 Ответ

12 голосов
/ 17 ноября 2011

Поскольку ваш плагин выполняется синхронно, вам будет легко обновить вашу сущность, если вы используете предоперационную стадию выполнения.

В этом случае вы можете просто что-то сделатьнапример:

Entity sms = (Entity)context.InputParameters["Target"]

// additional code to retrieve status

if(sms.Attributes.Contains("statuscode"))
    sms.Attributes["statuscode"] = new OptionSetValue(statuscode);
else
    sms.Attributes.add("statuscode", new OptionSetValue(statuscode));

Таким образом, вы просто добавите или обновите ключ из словаря Атрибутов, и он будет сохранен, как если бы значение приходило непосредственно из формы.

...