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

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

我希望有人能帮助我解决我一段时间以来一直在努力解决的问题。我有一个创建插件和一个更新插件。出于测试目的,我的创建插件(预操作)进行了简单的计算,并在保存后将结果放在一个字段中。

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

最佳答案

我们需要查看您的代码。但我可以提供简短的解释。
service.Update(entity) 再次调用您的插件,因为这是对注册插件的实体的另一次更新。为避免这种无限循环,您可以观看 Depth属性(property)。对插件的每次新调用都会增加此属性的值。

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

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

关于c# - Update-Plugin CRM 2011 上的前后实体图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281976/

相关文章:

c# - C# 中的 "Class"和 "Private Class"声明有什么区别?

dynamics-crm - Dynamics CRM 2015 门户演练中提到的 cache.axd 处理程序是什么(以及在哪里)?

c# - 当操作后创建遵循操作前更新插件时的 CRM 2013 执行顺序

c# - 如何为通常为选项集的实体属性自动生成早期绑定(bind)枚举属性?

c# - GridView 中的行编辑不起作用

c# - Environment.Exit() 导致我的应用程序在使用 Process.Start 后崩溃

.net - 从 windows azure 辅助角色连接到 CRM 2011 on Premise

dynamics-crm-2011 - 导入失败 - ID 不存在的角色

c# - 停止特定元素的 Storyboard动画

xml - 在哪里可以找到有关 Microsoft Dynamics CRM API 的 SOAP/XML 查询的信息