我有一个插件,我希望作为Post Process同步运行,因为如果它发出任何请求失败,我想在一个事务中回滚所有内容。我遇到过一个问题,如果我尝试运行一个AssociateRequest将另一条记录与触发插件的记录相关联,它会返回一个SQL超时。我知道我的代码是正确的,因为我使用相同的代码来关联其他记录(没有触发插件)并且它们执行正常。
var referencedEntityRelationship = new Relationship(ReferencedEntityRelationshipName);
var referencedEntityEntities = new EntityReferenceCollection(new EntityReference[] { new EntityReference(ReferencedEntityLogicalName, new Guid(receivedRequest.ReferencingEntityId)) });
var rtn = new AssociateRequest() { RelatedEntities = referencedEntityEntities, Relationship = referencedEntityRelationship };
rtn.Target = new EntityReference() { Id = responseId, LogicalName = dataEntityLogicalName };
我知道我可以通过异步运行插件来避免锁定。但如果由于某种原因出现故障,我无法回滚触发插件的初始请求并通知用户他们需要修复某些内容。任何有关如何在插件中执行关联请求的建议都会对触发插件的记录提出建议。