crm cascade delete不会触发插件

时间:2015-10-22 08:02:47

标签: plugins dynamics-crm-2011 crm

在crm中我有几个实体的解决方案。有三个导致问题。让我们称他们为A,B和C.

A和B具有一对多关系,对删除具有级联效应

B和C有一对多关系没有级联删除。

对于B我已经开发了一个crm插件,当删除它时,它也会删除C.一种级联删除插件。我不能在B和C之间创建级联,因为C已经与另一个实体处于级联关系。

当我删除任何实体B时,它会触发插件代码并删除C的所有子代。当我删除任何实体A时,它级联删除B,但它不会触发插件。

如何在不为实体A创建插件的情况下确保插件触发?我在crm相当新,所以我真的不知道在哪里寻找这种问题。

更新

该插件用于在“预验证”阶段触发。将其更改为“预操作”实际上导致插件触发。不幸的是,在这个阶段,所有已经删除的对象的Child引用。所以现在当A被删除时B被级联删除,并且插件触发,但我找不到它的任何子实体C引用

3 个答案:

答案 0 :(得分:0)

创建一个对象,该对象将存储子引用并将其传递给"共享变量"在预验证阶段。然后,您可以在操作前阶段访问共享变量:https://msdn.microsoft.com/en-us/library/gg328579.aspx。您将需要在两个步骤中注册的插件,但这将处理您的两个挑战。

答案 1 :(得分:0)

在实体B的删除消息的预操作阶段注册您的插件。然后注册实体的前映像以将原始查找字段获取到实体C.

答案 2 :(得分:0)

在级联删除期间,只会调用触发实体的 PreValidation。 对于您的实体 B,这意味着将跳过此阶段。

正如 Joseph 指出的,在 PreValidation 中设置共享变量通常可用于获取有关 PreOperation 中已删除数据的可用信息,但您必须确保在以下情况下也设置此共享变量删除 A

如果您的任何实体都知道解决方案,删除带有这些记录的解决方案也会触发级联删除,从而仅在 PreValidation 实体上调用 solution

Henk 的建议是可行的,如果与 C 相关的 B 记录集不需要任何处理,比如排序。