4

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

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

4

1 回答 1

3

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

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

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

于 2012-04-24T07:53:36.630 回答