我有一个名为
的班级public class AuditFlushEntityEventListener : DefaultFlushEntityEventListener
此类覆盖OnFlushEntity
。所以我有FlushEntityEvent
。
我想知道如何在更新期间恢复旧的状态对象。
到目前为止,我只有@event.Entity
(我的域名对象),以及@event.EntityEntry.LoadedState
答案 0 :(得分:1)
@event.LoadedState
包含数组中的先前值,@event.PropertyValues
包含当前值。相应的persister.PropertyNames
包含相同顺序的属性名称和persister.PropertyTypes
NH类型。
示例:
for (int i = 0; i < @event.PropertyValues.Length; i++)
{
Console.WriteLine("Property {0} : {1} => {2}",
@event.EntityEntry.Persister.PropertyNames[i],
@event.LoadedState[i],
@event.PropertyValues[i]);
}
我不确定“LoadedState”是否实际上是已加载的状态。它可能是DB中的状态,可能随着每次刷新而改变。检查一下。可能需要采取从事件中获得的“第一次加载状态”。
注意:我写了一篇“自动审计跟踪作家”。对于复杂的实体,它变得非常复杂。最复杂的是对象的嵌套(父 - 子)。该活动位于NH的深处。您需要处理组件和集合。