我有三个实体,我们称之为 Alpha , Beta 和 Gamma 。已注册两个插件以触发消息更新,包括后期操作和同步。
当 Alpha 中的字段 aja 发生更改时,会调用其中一个,并在任何相关的实例中设置字段 baja 的值β。第二个是在 Beta 中的 baja 字段发生更改时调用的,它会在任何相关的 Gamma中设置字段 gaja 的值
当我对 aja 进行更改时,我可以确认更新会传播到相关实例中的所有 baja 。对 baja 的相应操作会更新所有相关实例 gaja 。
让我疯狂的是, aja 的变化(显然会触发第一个插件导致 baja 更新)并不会触发第二个插件在 gaja 中设置一个值。
我希望 Alpha 的更改能够传播到 Gamma ,因为它是如何工作的。我怀疑我错过了一些东西,但经过几次尝试,记录检查,哭泣和咒骂,我迷失了。我可以丢失什么愚蠢的东西?!
答案 0 :(得分:1)
您通常面临的行为与IExecutionContext.Depth
支票
https://msdn.microsoft.com/en us/library/microsoft.xrm.sdk.iexecutioncontext.depth.aspx
因为插件是同步的,所以它们在当前事务中运行,它们会导致Depth
属性的增量。
第二个插件中的if (context.Depth > 2) { return; }
之类的检查可能会解决问题。