我们为Microsoft CRM编写了一个在创建实体后运行的插件,理想情况下我们希望它在保存到数据库后运行。如果我们将其设置为同步处理,则在我们的数据库触发器有时间修改实体记录之前触发它。
如果我们将插件设置为异步处理,是否确保在插件被触发之前已保存到数据库中,或者是否存在可能的竞争条件?
答案 0 :(得分:3)
您是否在CRM数据库表上设置了自己的触发器?不建议这样做;数据库上的所有操作都应该通过CRM Web服务完成,以确保您不会破坏任何内容。此外,安装CRM更新汇总时,无法保证自定义触发器能够继续存在。你应该总是使用插件。
除此之外,异步插件仅在数据库更新完成后才会触发,后期阶段的同步插件也是如此;不同之处在于操作(CRM webservice调用,保存CRM表单等)在插件运行之前不会阻塞,因此在保存记录表单的情况下,表单通常不会反映异步插件所做的更改,因为在回发后表单开始重新加载时,插件没有运行。