Сущность, содержащаяся в InputParameters ["Target"], включает только измененные поля, которые были отправлены в обновлении , а не все поля.Ваш плагин работает для Create, потому что InputParameters ["Target"] всегда содержит все поля во время создания очевидно.
Чтобы исправить это, вам нужно добавить PreImage к вашему шагу в PluginRegistrationTool, который включает поле primarycontactid.PreImage всегда будет включать значения для указанных вами полей такими, какими они были до обновления .
Хитрость заключается в том, чтобы сначала проверить primarycontactid для InputParameters ["Target"], потому что этосодержать последнее значение (например, если пользователь обновил и new_receivesnewsletter, и primarycontactid во время одного и того же сохранения).Если InputParameters ["Target"] не содержит primarycontactid, вернитесь к своему PreImage и получите доступ к чему-то вроде этого (при условии, что вы установили псевдоним вашего PreImage на «preimage»):
context.PreEntityImages["preimage"].GetAttributeValue<EntityReference>("primarycontactid")
Надеюсь, это поможет!