我一直在使用IPreUpdateEventListener审核实体,特别是使用FindDirty方法查找更改的属性:
public bool OnPreUpdate(PreUpdateEvent updateEvent)
{
int[] dirtyFieldIndices = updateEvent.Persister.FindDirty(updateEvent.State, updateEvent.OldState, updateEvent.Entity, updateEvent.Session);
// Get changed property names and audit...
}
这适用于简单属性。但是,我的实体具有其他实体的集合属性。其中一个实体已更改,更改将保持不变,但FindDirty不会为我提供该集合属性的索引。是否有任何方法可以获取已更改的属性以审核此更改?
答案 0 :(得分:-1)
我决定在我的域对象上有一个接收OldState集合的方法,并在其上应用自己的处理,检查每个对象以查看它是否已更改。