Как получить вновь созданный объект без дополнительного вызова IOrganizationService в Microsoft Dynamics CRM 2011? - PullRequest
3 голосов
/ 14 июня 2019

Я работаю с Microsoft Dynamics CRM 2011. Другой сервис связывается с CRM через IOrganizationService. Чтобы повысить производительность, я хочу уменьшить количество отдельных вызовов. В частности, мне интересно, возможно ли получить вновь созданную или обновленную сущность со всеми полями, которые инициализируются во время выполнения плагинов, без дополнительного вызова IOrganizationService.

Насколько я знаю, возможно в более новых версиях Microsoft Dynamics CRM. Но есть ли способ сделать это в Microsoft Dynamics CRM 2011?

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Ссылка, на которую вы ссылаетесь, относится к конкретному сценарию веб-API.

Во всем контексте выполнения плагина, либо при создании, либо при обновлении, до или после операции, мы можем получить все атрибуты этой конкретной записи в целевом объекте объекта из самого контекста.

// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
    context.InputParameters["Target"] is Entity)
{
    // Obtain the target entity from the input parameters.
    Entity entity = (Entity)context.InputParameters["Target"];

Для обновления вы можете зарегистрировать Изображения , чтобы получить все другие значения атрибута (pre-Image), которые не были обновлены в этой конкретной транзакции, без выполнения другого вызова службы.

Подробнее

1 голос
/ 14 июня 2019

Ответ «Нет» в любой версии CRM, использующей вызовы OrganizationService.Предполагая, что у вас есть сценарий, подобный следующему:

Entity contact = new Entity("contact")
Guid contactId = _service.Create(contact);
Entity refreshedContact = _service.Retrieve("contact", contactId, new ColumnSet("new_fieldupdatedbyplugin"));

Нет более эффективного способа получить значение contact.new_fieldupdatedbyplugin

В контексте выполнения плагина Арун, безусловно, прав,вы можете зарегистрировать плагин на шаге выполнения Post и ссылаться на PostImage, который будет включать в себя все значения, обновленные всеми плагинами, запущенными на этапах предварительного выполнения.Если вы хотите запустить какое-либо действие, основанное на значении, установленном пре-плагином, вы можете сделать это в пост-плагине.

...