如何在NHibernate事件OnFlushEntity中加载旧状态对象
本文关键字:加载 状态 对象 OnFlushEntity NHibernate 事件 | 更新日期: 2023-09-27 18:29:31
我有一个名为的类
public class AuditFlushEntityEventListener : DefaultFlushEntityEventListener
此类覆盖OnFlushEntity
。所以我有一个FlushEntityEvent
。我想知道如何在更新过程中恢复旧的状态对象。
到目前为止,我只有我的@event.Entity
(我的域的对象)和@event.EntityEntry.LoadedState
中的对象列表
*Nhibernate 3.0,我正在处理事件导致的问题,而使用FlushEntity导致的问题。
@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"是否真的是已经加载的状态。它可能是数据库中的状态,每次刷新都可能发生变化。检查一下。可能需要采取从事件中获得的"第一个加载状态"。
注:我写了一个"自动审计跟踪编写器"。对于复杂的实体,它会变得非常复杂。最复杂的是对象的嵌套(父-子)。事件发生在NH深处。您需要处理组件和集合。