Update-Plugin CRM 2011上的实体前和实体后图像

我希望somone可以帮助我解决一段时间以来我一直试图解决的问题。 我有一个创建插件和一个更新插件。 出于测试目的,我的create plugin(Pre-Operation)执行简单的计算,并在保存后将结果放在字段上。

当我在预操作上注册并更改我的逻辑字段时,我的update-plugin工作正常。 但是,如果我只更改其中一个字段(或在表单上弄脏其他字段),我会收到一个错误,即密钥不在字典中。 我已经完成了我的研究,并看到您在前后实体图像之间进行检查,以检查哪些字段已更新,哪些字段未更新。 但令我困惑的是,当我这样做时,我需要在Post-opertion上注册我的更新插件,这导致我的更新不再工作,如果我在我的代码结尾处做service.Update(实体)它给出我是无限循环的另一个错误。 在我的Update插件中,我确保我注册了两个图像(Pre和Post)。 如果有人可以建议我,如何在前后图像之间进行检查,我将不胜感激?

我们需要查看您的代码。 但我可以简要解释那里发生了什么。
service.Update(entity)再次调用你的插件,因为它是你的插件注册的实体的另一个更新。 要避免这种无限循环,您可以观察深度属性。 每次调用插件都会增加此属性的值。

如果您想知道在更新期间更改了哪些属性,请查看InputParameters 。 将只有更新的属性值。

Pre-Entity图像可用于Update消息,但不适用于Create(在实际创建实体实例之前不可能有图像)。 但是,在创建和更新消息的情况下,后实体图像呈现。
因此,如果您需要知道更改了哪些属性,请选中InputParameters。 您可以在Pre-Stage插件中执行此操作。 而值,InputParameters中的更新将存储在数据库中,因此您不需要调用service.Update。