【发布时间】:2011-04-28 21:04:19
【问题描述】:
我们为 Microsoft CRM 编写了在创建实体后运行的插件,理想情况下,我们希望它在保存到数据库后运行。如果我们将它设置为同步处理,它会在我们的数据库触发器有时间修改实体记录之前触发。
如果我们将插件设置为异步处理,是否可以确保在触发插件之前已将其保存到数据库中,或者那里可能存在竞争条件?
【问题讨论】:
标签: plugins dynamics-crm
我们为 Microsoft CRM 编写了在创建实体后运行的插件,理想情况下,我们希望它在保存到数据库后运行。如果我们将它设置为同步处理,它会在我们的数据库触发器有时间修改实体记录之前触发。
如果我们将插件设置为异步处理,是否可以确保在触发插件之前已将其保存到数据库中,或者那里可能存在竞争条件?
【问题讨论】:
标签: plugins dynamics-crm
您是否在 CRM 数据库表上设置了自己的触发器?不建议这样做;数据库上的所有操作都应该通过 CRM 网络服务来完成,以确保您不会破坏任何东西。此外,安装 CRM 更新汇总后,无法保证自定义触发器继续存在。您应该始终使用插件。
除此之外,异步插件仅在数据库更新完成后触发,同步插件在后期阶段也是如此;不同之处在于操作(CRM Web 服务调用、保存 CRM 表单等)在插件运行之前不会阻塞,因此在保存记录表单的情况下,表单通常不会反映异步插件所做的更改,因为回发后表单开始重新加载时插件尚未运行。
【讨论】: