Pre& Update-Plugin CRM 2011上的实体后图像

时间:2012-04-23 13:56:58

标签: c# dynamics-crm dynamics-crm-2011 crm dynamics-crm-4

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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