实体历史跟踪和事件处理程序 abp v3.4.0

Entity history tracking and event handlers abp v3.4.0

我刚刚更新到 abp v3.4.0,我目前正在研究历史记录跟踪功能,因为我认为这对我来说非常有用。

我只是不确定如何实际获取信息以及它与 Abp 系统的其余部分有何关系。

这就是我认为它应该在我脑海中发挥作用的方式。

  1. 实体的 属性 已更新,即已启用 => 已禁用。
  2. 订阅实体更新事件。
  3. 通过实体历史检查实体是否从启用 => 禁用。
  4. 执行一些其他操作。

现在我不确定的是如何从更新的事件中获取实体历史信息。

我试过在 IEventHandler 中使用存储库 private readonly IRepository<EntityChangeSet,long> _entityChangeRepository;,但这似乎 "Save Changes" 在触发更新事件之前。

那么访问实体历史信息的正确方法是什么?甚至可以通过事件访问它吗?

谢谢!

实体历史用于审计目的。

EntityChangeSet 在您的实体更新后保存(并在触发其 Updated 事件后)。

Is it even possible to access it through an Event?

坏消息:您无法通过您实体的 Updated 活动访问它(除非进行大量黑客攻击)。

好消息:但是您可以通过事件访问它。

So what would be the correct way to access the Entity History information?

EntityChangeSet 个实体的 Created 事件中访问它。

IEventHandler<EntityCreatedEventData<EntityChangeSet> 实施事件处理程序。

在那里,您可以:

  • 检查您的实体是否在 EntityChangeSet.EntityChanges,
  • 检查 EntityChange.ChangeType 是否为 EntityChangeType.Updated,
  • 检查 属性 是否在 EntityChange.PropertyChanges,
  • "check that the entity went from Enabled => Disabled via the"PropertyChange,最后
  • "perform some other actions."

同样,实体历史用于审计目的,所以这并不简单。但现在有可能! :)