实体历史跟踪和事件处理程序 abp v3.4.0
Entity history tracking and event handlers abp v3.4.0
我刚刚更新到 abp v3.4.0,我目前正在研究历史记录跟踪功能,因为我认为这对我来说非常有用。
我只是不确定如何实际获取信息以及它与 Abp 系统的其余部分有何关系。
这就是我认为它应该在我脑海中发挥作用的方式。
- 实体的 属性 已更新,即已启用 => 已禁用。
- 订阅实体更新事件。
- 通过实体历史检查实体是否从启用 => 禁用。
- 执行一些其他操作。
现在我不确定的是如何从更新的事件中获取实体历史信息。
我试过在 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."
同样,实体历史用于审计目的,所以这并不简单。但现在有可能! :)
我刚刚更新到 abp v3.4.0,我目前正在研究历史记录跟踪功能,因为我认为这对我来说非常有用。
我只是不确定如何实际获取信息以及它与 Abp 系统的其余部分有何关系。
这就是我认为它应该在我脑海中发挥作用的方式。
- 实体的 属性 已更新,即已启用 => 已禁用。
- 订阅实体更新事件。
- 通过实体历史检查实体是否从启用 => 禁用。
- 执行一些其他操作。
现在我不确定的是如何从更新的事件中获取实体历史信息。
我试过在 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."
同样,实体历史用于审计目的,所以这并不简单。但现在有可能! :)